Страницы

Поиск по вопросам

пятница, 31 мая 2019 г.

Как безопасно прочитать файл

Есть несколько способов прочитать информацию из файла. При этом, если файл занят другим процессом, то будет выброшено исключение.
Исключение конечно же можно перехватить, но если это недопустимо, что можно сделать?
Ситуация такая: используется FileSystemWatcher для чтения файла после изменения, изменение скорей всего будет сделано из блокнота. Если сразу после события об изменении попробовать прочитать файл, то его еще будет использовать процесс блокнота и он не успеет освободить доступ, мы получим исключение в большинстве случаев.
Для начала, хотелось бы понять, как можно проверить доступность на чтение файла, перед тем как его читать, что бы не ловить исключение.


Ответ

Не надо ставить перед собой задачу "чтобы не ловить исключение" - надо исключение поймать и повторить попытку.
Когда у меня была похожая задача, неплохо себя показала пауза в 100 миллисекунд после получения события до каких-либо действий с файлом - как правило, за это время файл успевал освободиться, пользователю же такая пауза обычно незаметна.

Комментариев нет:

Отправить комментарий