ahp-1984 Ответов: 1

Проверьте, записан ли файл полностью или нет в C#, .NET


У меня есть 2 системы, которые нужно обработать ниже сценария

01.System one записывает текст в файл в общем месте. мы не знаем об этой системе, как ее пишут.

02. Нужно написать программу на C# должен копировать только заполненный файл из общей папки.

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

Что я уже пробовал:

программа c# не может определить, открыт ли файл в notepad или notepad++

Maciej Los

Вы должны определить, что вы имеете в виду, говоря "проверьте, является ли файл полным"...

Eric Lynch

Не знаю, сработает ли это для вас...для подобных требований в прошлом я изначально писал во временный каталог или имя файла. Затем я переименовал/переместил файл только после его завершения. Таким образом, процесс, который читает файл, всегда видит только завершенные файлы.

1 Ответов

Рейтинг:
8

Maciej Los

Прежде всего, пожалуйста, прочтите мой комментарий к этому вопросу...

Если нет процесса, который блокирует файл во время операции чтения/записи, нет никакой возможности узнать, является ли конкретный файл "завершенным" или нет. Но...

Есть еще один Класс FileSystemWatcher (System.IO)[^], который прослушивает уведомления об изменениях файловой системы и вызывает события при изменении каталога или файла в каталоге. Смотрите список: События FileSystemWatcher (System.IO)[^]

Удачи вам!


ahp-1984

спасибо Мацей

Maciej Los

Всегда пожалуйста

Dave Kreskowiak

Но FileSystemWatcher никоим образом не говорит вам, что файл "завершен". Это только говорит вам, что файл каким-то образом изменился.

Вы все равно должны попытаться открыть файл и прочитать его содержимое. Если операция открытия завершается неудачно, файл все еще записывается. Вам придется подождать произвольное количество времени и попробовать снова.