c# – 关闭FileStream会关闭StreamReader吗?
发布时间:2020-12-15 04:10:51 所属栏目:百科 来源:网络整理
导读:如果我使用FileStream创建StreamReader,当我关闭FileStream时StreamReader会关闭还是我还需要关闭StreamReader? public void ReadFile(){ var file = new FileStream("c:file.txt",FileMode.Open,FileAccess.Read); var reader = new StreamReader(file);
如果我使用FileStream创建StreamReader,当我关闭FileStream时StreamReader会关闭还是我还需要关闭StreamReader?
public void ReadFile() { var file = new FileStream("c:file.txt",FileMode.Open,FileAccess.Read); var reader = new StreamReader(file); try { txtFile.Text = reader.ReadToEnd(); } catch (Exception) { throw; } finally { file.Close(); } } 解决方法
基本上是的.您实际上不必关闭StreamReader.如果这样做,它所做的就是关闭底层流.
@Bruno对关闭最外层包装器提出了一个很好的观点.最好关闭最外层的流并让它关闭底层流,以确保正确释放所有资源. 来自Reflector …… public class StreamReader : TextReader { public override void Close() { this.Dispose(true); } protected override void Dispose(bool disposing) { try { if ((this.Closable && disposing) && (this.stream != null)) { this.stream.Close(); } } finally { if (this.Closable && (this.stream != null)) { this.stream = null; this.encoding = null; this.decoder = null; this.byteBuffer = null; this.charBuffer = null; this.charPos = 0; this.charLen = 0; base.Dispose(disposing); } } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |