【发布时间】:2012-11-17 23:02:05
【问题描述】:
我正在尝试将字符串数组写入文件,这通常应该是一件容易的事。然而,下面的简单代码抛出了一个 IOException ,表明该文件正在被另一个进程使用。问题是,在运行此代码之前,该文件甚至都不存在。我可以向您保证,没有其他进程在使用该文件。那么我如何让愚蠢的 .NET 框架相信该文件没有被另一个进程使用并且可以继续呢?因为这真的不应该那么难。
StreamWriter writer = new StreamWriter(ListFileName);
foreach (string s in InfoLineList)
{
writer.WriteLine(s);
}
【问题讨论】:
-
你能用
File.WriteAllLines(path, InfoListList)吗?也许您遇到的任何文件锁定问题都可以避免。 -
我可以。但是我真的很想知道为什么它认为文件在其他地方打开?
-
好的,我把它改成了使用 WriteAllLines,它现在可以工作了。我仍然不明白为什么它不能以其他方式工作,如果有人可以向我解释这一点,我将不胜感激,但 WriteAllLines 确实有效。
-
提供的代码应该不会导致问题。即使您没有正确关闭文件,该文件也会在程序退出时关闭。如果我要尝试解决它,我会在调试器中运行程序以查看异常被抛出的位置以及当前的局部变量是什么。您可能需要关闭 Window 的文件索引服务或调整
writer以显式锁定文件。 -
以后请想出一个比“为什么这不起作用?”更好的标题
标签: c# .net file-io streamwriter