Как дождаться полного копирования файла? - PullRequest
5 голосов
/ 03 сентября 2010

У меня есть тема, которая опрашивает папку для новых файлов.Проблема в том, что он видит новый файл и начинает работать с ним даже до того, как файл будет полностью скопирован другим процессом.Из-за этого поллер получает файл, используемый другой ошибкой процесса.

Есть ли способ проверить, можно ли использовать файл бесплатно или получить уведомление?Конечно, мы можем использовать код обработки исключений, но есть ли лучший способ?

Технология: .NET 2.0 / C #

Обновление:

  • Обнаруженоиз других ответов, что если у нас есть доступ к приложению, пишущему файл, то лучше начать с другого расширения .tmp, а затем переименовать его после копирования.

  • FileStream.Lock можетиспользоваться, если мы не контролируем исходное приложение

1 Ответ

2 голосов
/ 03 сентября 2010

Мы пытаемся получить блокировку файла перед обработкой и обрабатываем IOException, а не общее исключение при попытке прочитать файл.

См. FileStream.Lock в MSDN.

...