3

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

StreamWriter writer = new StreamWriter(ListFileName);

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

1 回答 1

4

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

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

这将确保StreamWriter正确处理。

如果你真的想知道打开了什么文件,可以使用SysInternal 的 Handle 工具来检查。我愿意打赌这是你自己的程序。

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

File.WriteAllLines(ListFileName, InfoListList);
于 2012-11-29T21:04:28.633 回答