Delphi等到文件复制过程完成

Pie*_*Wyk 7 delphi readdirectorychangesw file 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) ;
Run Code Online (Sandbox Code Playgroud)

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

GJ.*_*GJ. 3

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

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