我有一个线程使用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) ;
我的问题是:有没有办法检测文件何时完全复制,或者我只是等到自上次检查后文件大小或上次修改时间没有改变?
答案 0 :(得分:1)
要确定文件传输是否已完成,请先检查是否可以获得独占访问权。
FileHandle := FileOpen(FileName, fmOpenRead or fmShareExclusive);
if FileHandle > 0 then
{valid file handle}