Я использовал Файл. ReadAllText для захвата некоторого csv, но каждый раз, когда я забываю закрывать файл в Excel, приложение, выдает исключение, потому что это не может получить доступ к файлу.
(Кажется сумасшедшим мне, я подразумеваю, что ЧТЕНИЕ в ReadAllText кажется довольно четким),
Я знаю, что существует Файл. Открытый со всеми дополнительными свойствами, но там 'промежуточный' метод, который не связал бездельничание с буферами и массивами символов?
Да, я ленив, поэтому провалите меня, просто дайте мне ответ сначала:)
Я думаю, вам просто нужно следующее:
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 сделает это, хотя ожидал, что это так.
Если вы хотите указать флаги общего доступа к файлам для открытия файла, который используется, вы застряли с File.Open ().