1

我有以下代码,但IOException出现错误。它说它正在由不同的进程使用。我没有在某处打开文件,应用程序创建了文件。

这是我的代码:

在功能一中:

System.IO.StreamWriter data = new System.IO.StreamWriter(@"c:\temp.txt");
data.WriteLine(temp);
data.Close()

在此之后,调用第二个函数来处理临时文件。对 IO 执行某些操作的行如下:

string[] part = System.IO.File.ReadAllLines(@"c:\temp.txt");

在此函数中,string[] part将修改并添加到最终的完整文件中:

System.IO.File.AppendAllLines(Datas.Core.outputDir + @"\" + Datas.Core.outputName + ".txt", part);

我猜这个System.IO.ReadAllLines函数让文件很忙,我怎样才能更改我的代码以便我可以再次访问该文件?

4

3 回答 3

2

该方法System.IO.File.ReadAllLines()不会使文件保持忙碌,它会打开文件进行读取,然后在完成后自动关闭它。问题可能在以下行

System.IO.File.AppendAllLines(Datas.Core.outputDir + @"\" + Datas.Core.outputName + ".txt", part);

我认为最好使用类StreamWriter将文本附加或写入特定文件并稍后控制编写器(类)。

这是一个示例代码

string Path = @"C:\temp.txt"; // You can change this to anything you would like
StreamWriter _TextWriter = new StreamWriter(Path, true); // change to "false" if you do not want to append

然后,您可以使用以下方法之一:

将文本附加到最后一行

_TextWriter.Write("something");

在文件末尾创建一个新行,然后将文本附加到最后一行

_TextWriter.WriteLine("something");

然后在StreamWriter处理完文件后使用以下代码关闭

_TextWriter.Close();

谢谢,
我希望你觉得这有帮助:)

于 2012-10-20T20:28:29.573 回答
1

您需要调用data.Dispose()(不仅仅是Close)以完全释放文件句柄。

于 2012-10-20T20:52:56.027 回答
0

将其放入System.IO.StreamWriterusing 语句中,以便正确处理:

using (System.IO.StreamWriter data = new System.IO.StreamWriter(@"c:\temp.txt"))
{
    data.WriteLine(temp);
}

这就是MSDN中的示例的呈现方式。

于 2012-10-20T20:35:03.893 回答