Закрытие StreamReader после ReadToEnd - PullRequest
7 голосов
/ 03 декабря 2008

Можно ли как-нибудь закрыть StreamReader после вызова метода ReadToEnd в конструкции, например:

string s = new StreamReader("filename", Encoding.UTF8).ReadToEnd();

Любая альтернативная элегантная конструкция с такой же семантикой также будет принята.

Ответы [ 3 ]

12 голосов
/ 03 декабря 2008

Я думаю, что на самом деле вы используете метод File.ReadAllText , если вы просто пытаетесь прочитать весь текст из файла в кратчайшем коде.

Если вы не укажете кодировку, он будет автоматически использовать UTF-8.

2 голосов
/ 03 декабря 2008

Нет, нет, но всегда полезно использовать объекты, которые наследуют Форма IDisposable. Если вы не сделаете это в цикле, вы получите утечки памяти

string s = string.Empty;
using(StreamReader sr = new StreamReader("filename", Encoding.UTF8))
{
  s = sr.ReadToEnd();
}
2 голосов
/ 03 декабря 2008

Вы можете использовать , используя оператор , который автоматически закрывает поток:

string s = null;    
using ( StreamReader reader = new StreamReader( "filename", Encoding.UTF8 ) { s = reader.ReadToEnd(); }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...