为什么这不起作用?

时间:2012-11-29 19:21:49

标签: c# .net file-io streamwriter

我正在尝试将一个字符串数组写入文件,这通常应该是一件容易的事情。但是,以下简单的代码抛出IOException,表示该文件正被另一个进程使用。问题是,在运行此代码之前,该文件甚至不存在。我可以向您保证,没有其他进程使用该文件。那么,我如何说服愚蠢的.NET框架,该文件没有被另一个进程使用,并且可以继续?因为这真的不应该那么难。

StreamWriter writer = new StreamWriter(ListFileName);

foreach (string s in InfoLineList) 
{
    writer.WriteLine(s);
}

1 个答案:

答案 0 :(得分:4)

这可能是因为当你完成它时你没有关闭流,所以某些句柄在某处被卡住了。也许代码是Web应用程序的一部分,Web服务器进程保持锁定,或者代码正在多次运行。我建议在using块中使用流:

using(StreamWriter writer = new StreamWriter(ListFileName))
{
   foreach (string s in InfoLineList) 
   {
       writer.WriteLine(s);
   }
}

这将确保正确处理StreamWriter

如果确实想知道文件打开的内容,请使用SysInternal's Handle tool进行检查。我愿意打赌这是你自己的计划。

最后,正如我在评论中所说,File.WriteAllLines()方法可以一次性将一个可枚举的字符串列表写入文件中:

File.WriteAllLines(ListFileName, InfoListList);