2009-03-09 5 views
19

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

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

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

ответ

13

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

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

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

+0

+1 Я использую его в моих ночных партиях, и это работает, не элегантно, но работает. – systempuntoout

1

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

2

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

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

Please see my answer here for more information.

0

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

6

Вы должны в 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 
+1

Решил мою проблему. Забыл закрыть его. Размещено в заголовке 'using (...) {...}' и хорошо идти – Jcorretjer

Смежные вопросы