Delphi дождется завершения процесса копирования файла

У меня есть тема, которая использует 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 ответ

Решение

Чтобы убедиться, что передача файла закончена, сначала проверьте, можете ли вы получить эксклюзивный доступ.

  FileHandle := FileOpen(FileName, fmOpenRead or fmShareExclusive);
  if FileHandle > 0 then
    {valid file handle}
Другие вопросы по тегам