高手请入,关于打开其它进程正在使用的文件的问题!

colorknight 2002-07-03 06:21:23
现要打开一个文件(它是SQL SERVER下的一个数据文件),获得它的文件长度,可是在打
开时(CREATEFILE()API共享方式打开),提示这个文件正在被其他进程使用无法访问。文另外,如果从文件夹中选详细列表,可以看到文件大小,不知这是如何实现的。

希望高手指点一二,提供其他方法获得文件大小或提供方法解决无法打开文件都可!
...全文
79 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jmcooler 2002-07-03
  • 打赏
  • 举报
回复
早期的C函数 _fstat()也应该可以
jmcooler 2002-07-03
  • 打赏
  • 举报
回复
这个简单:
CFile::GetStatus()是个静态函数,不需要打开文件就可以获取文件的信息。
用法是:CFileStatus fs;
if( CFile::GetStatus( "c:\\test.txt", &fs ) )
{
//从CFileStatus中取你想要的信息。
}
colorknight 2002-07-03
  • 打赏
  • 举报
回复
YP2002CN:老兄,谢谢你。不过我可能描述的不够清楚,就是这个数据库文件
显然是被SQL SERVER使用的。不知道有没有什么办法解决。另外,打开文件之前
就获得文件大小,正是我想要的。不知道怎么做!
leon_gui 2002-07-03
  • 打赏
  • 举报
回复
上次我也遇到过这个问题,neosu大侠指点了一下。
解决方法是:
CFileFind cff;
if(cff.FindFile("你要打开的文件名"))
{
cff.FindNextFile();
DWORD nSize = cff.GetLength();
}
cff.Close();
不知道能不能对你有帮助。
YP2002CN 2002-07-03
  • 打赏
  • 举报
回复
我沒做過.給你提出我的想法;
1.在打開那個文件之前,就獲得該文件size.
2.讓其他線程先歇息.然後close file and get size 然後讓指針回位.
3.多copy一份..赫赫..做你的文件得虛擬文件,用完del..哈.

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧