Подтвердить что ты не робот

Файл, используемый другим процессом

Много раз мы получаем ошибку при попытке записать файл на платформе Windows,

"Процесс не может получить доступ к файлу" XXX ", потому что он используется другим процессом".

Как проверить на С# перед записью в файл, что он не используется другим процессом?

4b9b3361

Ответ 1

Вы не можете, в основном - вам нужно попытаться открыть файл для записи, и если вы получите исключение, вы не сможете его написать: (

Даже если вы можете сделать отдельную проверку сначала, результат будет устаревшим, прежде чем вы сможете начать писать - вы все равно можете получить исключение позже.

Было бы неплохо, если бы инфраструктура предоставила метод TryOpen, по общему признанию...

Ответ 2

Единственный вариант здесь - поймать сгенерированное исключение и обработать его соответствующим образом. См. Эти два других SO-потока для полного обсуждения:

Ответ 3

Вы должны close сохранить свой файл после его использования в своем коде:

FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read); //file is opened
//you use the file here 
file.Close(); //then you must to close the file

Ответ 4

Вам просто нужно попробовать открыть доступ с разделяемым доступом и обработать возникшую ошибку.

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

Подробнее см. мой ответ.

Ответ 5

Попробуйте положить команду open в оператор try-catch. Если файл используется, будет выведено IOException.

Ответ 6

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