Файл, используемый другим процессом
Много раз мы получаем ошибку при попытке записать файл на платформе Windows,
"Процесс не может получить доступ к файлу" XXX ", потому что он используется другим процессом".
Как проверить на С# перед записью в файл, что он не используется другим процессом?
Ответы
Ответ 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
Попробуйте переименовать файл, если вы можете переименовать его, тогда он подтверждает, что ни один другой процесс не обращается к этому файлу. Наконец, убедитесь, что вы переименовали один и тот же файл в той же папке.