Delphi等到文件复制过程完成

时间:2011-06-30 15:38:53

标签: delphi file readdirectorychangesw file-in-use

我有一个线程使用ReadDirectoryChangesW在文件夹中添加或删除文件时通知我。

对于每个新图像,我打开文件并创建图像的缩略图。但是,在文件完全复制到目标文件夹之前,我会收到通知,在这种情况下,我只会得到一个部分缩略图。 (文件从远程位置复制到中央服务器,网络在高峰时间可能会变慢。)

我会检查文件是否正在使用,但这似乎不适用于图像文件。

HFileRes := CreateFile(pchar(Filename), GENERIC_READ or GENERIC_WRITE, 0, nil,   OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0) ;
Result := (HFileRes = INVALID_HANDLE_VALUE);
if (not Result) then
  CloseHandle(HFileRes) ;

我的问题是:有没有办法检测文件何时完全复制,或者我只是等到自上次检查后文件大小或上次修改时间没有改变?

1 个答案:

答案 0 :(得分:1)

要确定文件传输是否已完成,请先检查是否可以获得独占访问权。

  FileHandle := FileOpen(FileName, fmOpenRead or fmShareExclusive);
  if FileHandle > 0 then
    {valid file handle}