110,539
社区成员
发帖
与我相关
我的任务
分享
StreamWriter sw =File.CreateText(path);
//写入
sw.Close();
FileStream fs = File.Open(path, FileMode.OpenOrCreate);
StreamWriter sw1 = new StreamWriter(fs);
//写入
sw1.Close();
fs.Close();
using(FileStream fs = File.Open(path, FileMode.OpenOrCreate))
using(StreamWriter sw1 = new StreamWriter(fs))
{
....... 使用 sw1 的操作
};
这可以确保调用 Dispose。不用调用 Close,调用 dispose 就够了。
如果不写,显然 GC 回收 StreamWriter 对象时也会调用 Dispose 的,也会去 Flush 和 Close。但是那就有几秒钟延迟,而这个时候可能就会造成应用中某些地方的使用这些资源的代码抛出运行异常。
而如果你显示地去使用 using{ } 来调用 Dispose,从上面贴出的源代码看,它调用了 GC.SuppressFinalize((object) this),也就是说在 GC 回收 StreamWriter 对象时就不会额外去再调用 Close 方法了。
using(StreamReader reader = new StreamReader(path,Encoding.UTF8)){
}