在ReadToEnd之后关闭StreamReader

时间:2008-12-03 07:28:12

标签: c# .net file-io

在构造中调用ReadToEnd方法之后是否有可能以某种方式关闭StreamReader:

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

任何具有相同语义的替代优雅结构也将被接受。

3 个答案:

答案 0 :(得分:12)

我认为你真正使用的方法是File.ReadAllText,如果你只是想用尽可能短的代码读取文件中的所有文本。

如果您没有指定编码,它将自动使用UTF-8。

答案 1 :(得分:2)

您可以使用 using 语句,自动关闭该流:

string s = null;    
using ( StreamReader reader = new StreamReader( "filename", Encoding.UTF8 ) { s = reader.ReadToEnd(); }

答案 2 :(得分:2)

没有,但使用继承的dispose对象总是一个好习惯 形式IDisposable。如果不在循环中执行此操作,则会出现内存泄漏

string s = string.Empty;
using(StreamReader sr = new StreamReader("filename", Encoding.UTF8))
{
  s = sr.ReadToEnd();
}