StreamWriter使用Using语句自动释放资源

.Net技术 码拜 7年前 (2015-03-28) 1170次浏览 0个评论
 

 string s1 = @”D:\iosample\pp.txt”;           
 using (StreamWriter sw = new StreamWriter(s1, false, Encoding.GetEncoding(“gb2312”)))   
   {
      sw.WriteLine(“我好想熊”);
   }
使用using语句的作用我也知道,使用完之后自动释放资源
可是,并没有说一定要使用啊,向下面这样:
StreamWriter sw = new StreamWriter(s1, false, Encoding.GetEncoding(“gb2312”))
sw.WriteLine(“我好想熊”);
为什么写文本写不进去呢?并没有说一定要使用using语句啊。

 
StreamWriter使用Using语句自动释放资源
20分
StreamWriter sw = new StreamWriter(s1, false, Encoding.GetEncoding(“gb2312”))
sw.WriteLine(“我好想熊”);
sw.Flush();
sw.Close();
StreamWriter使用Using语句自动释放资源
20分
StreamWriter sw = new StreamWriter(s1, false, Encoding.GetEncoding(“gb2312”))
sw.WriteLine(“我好想熊”);
使用完了sw,需要关闭流
添一句
sw.Close();
因为必须调用 Close 以确保所有数据正确写出到基础流中。
详情参考MSDNhttp://msdn.microsoft.com/zh-cn/library/system.io.streamwriter.close(v=vs.95)
StreamWriter使用Using语句自动释放资源
5分
加上 sw.Close(),
StreamWriter使用Using语句自动释放资源
10分
1.打开盒子
2.装入东西
span style=”color: #FF0000;”>3.关上盒子
要完整
StreamWriter使用Using语句自动释放资源
8分
在VS里不用考虑是否关闭流,会自动关闭的!
StreamWriter使用Using语句自动释放资源
20分
假设经常多用户访问此文件,那么及时关闭此Stream可定可以提搞成功了。
简单地写sw.Close();是不足够的,因为当出现异常时,这个Close就根本不执行。所以这种写法不对。你所说的“写Using而不写Close”才是真正可以保证即使抛出异常时也可以及时Close的。楼上不写Using而写Close的代码,全都忘记了类似Using一样“在抛出异常时也要执行Close”这个要求。
StreamWriter使用Using语句自动释放资源
10分
那么及时关闭此Stream可定可以提搞成功了  –>  那么及时关闭此Stream肯定可以提高成功率
打个比方说,假设经常有几十个线程同时写入同一个文件,遇到异常就不再写入了(或者等待一段时间之后才写入)。你可以拿个纸笔笔划一下,当你写Using{}的时候,由于可以确保“即使出错也能立刻关闭sw”,那么其它写入线程就能顺利成功;而假设当出现异常时你的代码并不执行sw.Close,那么此后的一大堆线程就连锁反应出现了错误,这就是灾难性的。
所以需要写using{}。
StreamWriter使用Using语句自动释放资源
7分
StreamWriter sw = new StreamWriter(s1, false, Encoding.GetEncoding(“gb2312”))
sw.WriteLine(“我好想熊”);
sw.Flush();
sw.Close();
StreamWriter使用Using语句自动释放资源
StreamWriter sw = new StreamWriter(s1, false, Encoding.GetEncoding(“gb2312”))
try
{
  sw.WriteLine(“我好想熊”);
  sw.Flush();
  sw.Close();
}
catch (Exception e)
{
  sw.Close();
}
StreamWriter使用Using语句自动释放资源
StreamWriter sw = new StreamWriter(s1, false, Encoding.GetEncoding(“gb2312”))
try
{
  sw.WriteLine(“我好想熊”);
  sw.Flush();
}
catch (Exception e)
{
  //do sth..

finally
{
  sw.Close();

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明StreamWriter使用Using语句自动释放资源
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!