StreamReader及StreamWriter类中包含一个私有的Stream,
1)如果你使用public StreamReader(string path)和public StreamWriter(string path);这个构造函数,StreamReader和StreamWriter会主动创建一个FileStream
2)如果你使用public StreamReader(Stream stream)或public StreamWriter(Stream stream);这个构造函数,StreamReader或StreamWriter则不会再创建FileStream而是直接使用你传入的Stream 。
3)在上述两种情况下,StreamReader或StreamWriter在Close的时候都会关闭FileStream。
实例代码:
FileStream fs = new FileStream(@"C:\A.txt" , FileMode.OpenOrCreate);
StreamWriter sw = new StreamWriter(fs);
sw.Close( );
fs.Close( );
在 sw.Close( );执行完毕后,其实fs已经被关闭了。因此 fs.Close( );其实是可以省略的。
当然,这样的写法不会有任何问题,因为Dispose不会被执