我正在尝试将一个字符串数组写入文件,这通常应该是一件容易的事情。但是,以下简单的代码抛出IOException,表示该文件正被另一个进程使用。问题是,在运行此代码之前,该文件甚至不存在。我可以向您保证,没有其他进程使用该文件。那么,我如何说服愚蠢的.NET框架,该文件没有被另一个进程使用,并且可以继续?因为这真的不应该那么难。
StreamWriter writer = new StreamWriter(ListFileName);
foreach (string s in InfoLineList)
{
writer.WriteLine(s);
}
答案 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);