FileStream с заблокированным файлом

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

using (FileStream stream = new FileStream("path", FileMode.Open))

Спасибо!

4 ответа

Решение

Вы должны попробовать другой конструктор. Они задокументированы на MSDN.

Этот выглядит как ставка:

FileStream Constructor (String, FileMode, FileAccess, FileShare)

MSDN Link

FileAccess

Константа, определяющая, как файл может быть доступен объекту FileStream. Это получает свойства CanRead и CanWrite объекта FileStream. CanSeek имеет значение true, если путь указывает файл диска.

Обменник

Константа, которая определяет, как файл будет использоваться процессами.

using (FileStream stream = new FileStream("path", FileMode.Open))

Это будет использовать значение по умолчанию для аргумента FileShare, FileShare.Read. Который запрещает какой-либо процесс от записи в файл. Это не может работать, если в файл записывается другой процесс, вы не можете отрицать уже полученное право.

Вы должны указать FileShare.ReadWrite. Это могло бы все еще не работать, если другой процесс использовал FileShare.None, никакого обходного пути для этого. Помните, что получение доступа для чтения к записываемому файлу проблематично, у вас нет надежного указания конца файла. Последняя запись или строка в файле могла быть написана только частично.

Я использовал следующее, которое работает, однако следует использовать с осторожностью, так как файл может быть изменен, пока он открыт другим процессом.

FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read,FileShare.ReadWrite);

Вы можете просто разблокировать файл и прочитать файл после него. Просто используйте Handle.exe из Sysinternals или Unlocker с параметрами командной строки. Они оба могут разблокировать файл, и вы можете легко запустить их из вашей программы, не выходя из программы. (Но не используйте их для файла Windows SAM, он не работает с SAM;)) Удачи!

Другие вопросы по тегам