如何判断文件正在被使用

Zoogreen 2005-05-31 05:03:48
比如txt,avi,dat,rm等格式的文件
...全文
144 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
stillwpl 2005-05-31
  • 打赏
  • 举报
回复
有一个很简单的方法 就是 运行程序后 它有时回弹出i/o接口错误 这样肯定会有一部分是文件被占用的问题
fffddd 2005-05-31
  • 打赏
  • 举报
回复
TXT 是可以同时打开的。
Kevin928 2005-05-31
  • 打赏
  • 举报
回复
用try..except ,其中让try试图以写方式打开,如果文件正被使用,应该会抛出异常
我只是想法,没经过试验,楼下继续
Zoogreen 2005-05-31
  • 打赏
  • 举报
回复
我要判断的文件比较大的媒体文件 400M 左右的,openfile, createfile打开或创建,太浪费时间跟资源了
BigBen 2005-05-31
  • 打赏
  • 举报
回复
我倒有一个问题了,怎么知道正在使用一文件的程序名?或其主程序的HANDLE?
BigBen 2005-05-31
  • 打赏
  • 举报
回复
//利用OpenFile Api函数判断
function FileLocked(Fn: string): Boolean;
var
I : Integer;
Struct: TOfStruct;
Style: Cardinal;
Hdl: Hfile;
Drive: String;
begin
Style := OF_Share_Exclusive; //排它方式打开
Drive := UpperCase(Fn[1]);
Struct.fFixedDisk := Ord(Drive <> 'A'); //判断是否是硬盘
Struct.cBytes := SizeOf(Struct);
For I := 1 to Length(Fn) do
Struct.szPathName[I-1] := Fn[I];
Struct.szPathName[I] := Chr(0); //填充文件名
Hdl := OpenFile(Pchar(Fn), Struct, Style);
if Hdl = HFILE_ERROR then
begin
Result := True; //文件被锁定
Showmessage(SysErrorMessage(GetLastError)); //显示错误原因
end
else
Result := False;
end;

//利用CreateFile Api函数判断
function LockedFile(Fn: string): Boolean;
var
AFile: THandle;
SecAtrrs: TSecurityAttributes;
begin
FillChar(SecAtrrs, SizeOf(SecAtrrs), #0);
SecAtrrs.nLength := SizeOf(SecAtrrs); //结构体长度
SecAtrrs.lpSecurityDescriptor := nil; //安全描述
SecAtrrs.bInheritHandle := True; //继承标志
AFile := CreateFile(PChar(Fn), GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_Read, @SecAtrrs, OPEN_EXISTING,
FILE_ATTRIBUTE_Normal, 0);
if AFile = INVALID_HANDLE_VALUE then
begin
Result := True; //文件被锁定
showmessage(SysErrorMessage(GetLastError));
end
else
Result := False;
end;


从网上翻的。
Zoogreen 2005-05-31
  • 打赏
  • 举报
回复
晕,关键是正在使用不能删,没有在使用了,经server端确认后才能删,server没有确认是不能删的。
g961681 2005-05-31
  • 打赏
  • 举报
回复
尝试把他给删,如果删不掉,那就是正在被使用了!
Zoogreen 2005-05-31
  • 打赏
  • 举报
回复
关注一下啊,只是
giveusomecolor 2005-05-31
  • 打赏
  • 举报
回复
关注`````````

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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