Подтвердить что ты не робот

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

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

(Кажется сумасшедшим для меня, я имею в виду, что READ в ReadAllText кажется довольно ясным)

Я знаю, что есть File.Open со всеми звонками и свистами, но есть ли "промежуточный" метод, который не включает беспорядок с буферами и char массивы?

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

4b9b3361

Ответ 1

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

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 это сделает, хотя я бы ожидал, что это произойдет.

Ответ 2

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