日期:2014-05-17  浏览次数:20422 次

StreamWriter反复实化例化输出效率低下,我这代码应如何提高效率?
我下面是用了while动态取得内容,再StreamWriter输出写文件,但是我发现在 while里面不断重复实例化StreamWriter时,效率会变得很低,很耗资源,请问如何将 StreamWriter实例化移到 while 的外面来?或者有没有更高效的写法?谢谢大家

while (Dr.Read())
{
   ......
   //生成 动态文件名 和 内容
   ......

   StreamWriter sw = new StreamWriter("文件名", true, );
   sw.Write("内容");
   sw.Flush();
   sw.Close(); 
}

分数不多,全部奉上,谢谢大家帮忙。

------解决方案--------------------
using(StreamWriter sw = new StreamWriter("文件名", true, ))
{
while (Dr.Read())
{
  
   
   sw.Write("内容");

}
}

  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
------解决方案--------------------
先存下来,一次性写入

Dictionary<string,StringBuilder> dict= new Dictionary<string,StringBuilder>();
while (Dr.Read())
{
if(!dict.ContainsKey("文件名"))
{
dict.Add("文件名",new StringBuilder());
}
dict["文件名"].AppendLine("内容"); 
}

foreach(var kvp in dict)
{
using(StreamWriter sw = new StreamWriter(kvp.Key, true, ))
{
   sw.Write(kvp.Value。ToString());
}

------解决方案--------------------
每次写的都是单独的文件名,这效率问题似乎不在 StreamWriter 上吧。
------解决方案--------------------
引用:
因为我循环的次数上万次,每次将内容输出成一个文件,这样就要输出上万个不同的文件,如果要在循环里做上万次的输出实例化,这样就会变得很慢,大家说我的思路正确吗?有什么好的方法?谢谢大家。


异步 多线程。