Вопрос по filesystems, file, file-permissions, file-io, c# – Могу ли я просто «прочитать» файл, который используется?

14

Я пытаюсь использовать StreamReader для чтения файла, но он всегда используется другим процессом, поэтому я получаю эту ошибку:

Процесс не может получить доступ к файлу\ arfjwknasgmed17 \ C $ \ FLAG CONDITION \ CP-ARFJN-FLAG.XLS ' потому что он используется другим процессом.

Есть ли способ, которым я могу прочитать это, не копируя это? Или это мой единственный вариант?

Ваш Ответ

2   ответа
2

попробуйте код ниже

FileStream fileStr = File.Open(, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
fileStream = new StreamReader(fileStr);

Я пробовал это на Windows XP. Если файл уже открыт в режиме записи другим процессом & он не указал права на совместное использование, вы все равно сможете открыть файл в режиме чтения.

Отказ от ответственности: это работает, но я не уверен, стоит ли вам использовать его в рабочем коде. Я пока не могу найти формальную документацию, которая говорит, что она должна работать.

25

Вы можете прочитать файл, только если программа, открывшая файл, сначала указала права на чтение для этого файла.

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

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

Если программа, открывшая файл в первую очередь, поддерживает Volume Shadow Copy (VSS), вы также можете использовать VSS для получения доступа к файлу.

Существуют коммерческие программные драйверы, которые позволяют вам получать доступ к таким файлам, даже когда они используются. Раньше вы могли получить Open File Manager от St-Bernards, и вы также можете использоватьДиспетчер доступа к файлам (FAM) VisionWorks Solutions Inc. Эти драйверы обычно являются OEMРедакция резервных компаний-разработчиков программного обеспечения для включения в их продукты.

VSS работает, сообщая программе, у которой уже открыт файл, что другая программа хотела бы прочитать из файла. Затем VSS делает копию файла и позволяет вам читать из этой копии. VSS не работает для устаревших приложений.

FAM прозрачно работает как с устаревшими, так и с не унаследованными программами, указав 'разрешенный список приложений, которые могут получить доступ к исключительно открытым и заблокированным файлам. Только программы в этом списке имеют доступ к этим файлам. Когда файл открывается, он переходит в режим кэширования, чтобы вы получили копию файла, как это было, когдаРезервное копирование / открыть» файла началось. В этот момент программа, которая первоначально открыла файл, видит файл таким, какой он есть на самом деле, а вторая программа в списке разрешенных файлов видит файл таким, каким он был, когда 'открыть / резервное копирование» из файла случилось. Это обеспечивает согласованность файла.

Похожие вопросы