如何检测一个File正被系统打开或使用?(200分)

  • 主题发起人 主题发起人 cheetahcj
  • 开始时间 开始时间
C

cheetahcj

Unregistered / Unconfirmed
GUEST, unregistred user!
Hi,个位大侠,我最近用Delphi5写的程序中用DeleteFile来删除一个File.我想在Del之前检测一下这个File是否正在被打开或使用
既如果这个File是被系统正在打开的,怎样知道这个File是被系统打开的或者是正在调用?
请问这个问题怎么解决呢,否帮个忙?
 
尝试删除,并重载异常。
 
fileopen('c:/temp/test.dat',fmShareExclusive)=-1 表示正在使用或者不存在。
DeleteFile('c:/temp/test.dat')=false 表示文件不存在或者正在使用,此时一会发生
异常!
 
如果在一个打开的文件中进行多次的读写操作,会不会发生所读写数据不对或别的什么问题?
 
这样可以吗?
function IsFileInUse(fName : string ) : boolean;
var
HFileRes : HFILE;
begin
Result := false;
if not FileExists(fName) then
exit;
HFileRes := CreateFile(pchar(fName), GENERIC_READ or GENERIC_WRITE,0, nil, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0);
Result := (HFileRes = INVALID_HANDLE_VALUE);
if not Result then
CloseHandle(HFileRes);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
if isfFileInUse('c:/programs/delphi5/bin/delphi32.exe') then
begin
ShowMessage('File in use');
end
else
begin
ShowMessage('File not in use');
end;
end;
 
试一下用记事本开一个文本,这个函数不会有用的,以前讨论过
 
文本文件很麻烦
 
多人接受答案了。
 
后退
顶部