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

Я использовал Файл. ReadAllText для захвата некоторого csv, но каждый раз, когда я забываю закрывать файл в Excel, приложение, выдает исключение, потому что это не может получить доступ к файлу.

(Кажется сумасшедшим мне, я подразумеваю, что ЧТЕНИЕ в ReadAllText кажется довольно четким),

Я знаю, что существует Файл. Открытый со всеми дополнительными свойствами, но там 'промежуточный' метод, который не связал бездельничание с буферами и массивами символов?

Да, я ленив, поэтому провалите меня, просто дайте мне ответ сначала:)

36
задан Tim Medora 23 November 2019 в 18:20
поделиться

2 ответа

Я думаю, вам просто нужно следующее:

using (var fileStream = new FileStream("foo.bar", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var textReader = new StreamReader(fileStream))
{
    var content = textReader.ReadToEnd();
}

Параметр FileAccess.Read - это то, что важно, чтобы указать, что вы хотите только прочитать файл. Конечно, даже для этого файл должен быть открыт Excel в режиме чтения и совместного использования (см. Перечисление FileShare в .NET). Я не тестировал, поэтому не могу гарантировать, что Excel сделает это, хотя ожидал, что это так.

58
ответ дан 27 November 2019 в 05:58
поделиться

Если вы хотите указать флаги общего доступа к файлам для открытия файла, который используется, вы застряли с File.Open ().

0
ответ дан 27 November 2019 в 05:58
поделиться
Другие вопросы по тегам:

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