C# IOException是未处理的错误

C# IOException是未处理的错误,c#,file-io,C#,File Io,我有下面的代码,我得到一个IOException错误。它说它被另一个过程使用。我没有在某处打开该文件,应用程序创建了该文件 这是我的代码: 在功能一中: System.IO.StreamWriter data = new System.IO.StreamWriter(@"c:\temp.txt"); data.WriteLine(temp); data.Close() 在此之后,调用第二个函数,该函数应处理临时文件。与IO相关的行如下所示: string[] part = System.IO.

我有下面的代码,我得到一个
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
函数会让文件忙,我如何更改代码以便再次访问文件?

方法
System.IO.file.ReadAllLines()
不会让文件忙,它会打开文件进行读取,然后在完成后自动关闭。问题可能出现在以下行中

System.IO.File.AppendAllLines(Datas.Core.outputDir + @"\" + Datas.Core.outputName + ".txt", part);
我认为最好使用类
StreamWriter
向特定文件追加或写入文本,然后控制writer(类)

下面是一个示例代码

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");
在文件末尾创建新行,然后在最后一行追加文本

_TextWriter.Write("something");
_TextWriter.WriteLine("something");
完成文件处理后,使用以下代码关闭
StreamWriter

_TextWriter.Close();
谢谢,

我希望这对您有所帮助:)

System.IO.StreamWriter
放入using语句中,以便正确处理它:

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

这就是显示的方式。

您需要调用(而不仅仅是
关闭
)以完全释放文件句柄。

您需要调用
数据。Dispose()
您发布的代码无法保持文件锁定。在实际程序中的某个地方,您忘记关闭/处置,或者在不使用using语句的情况下吞咽异常。就像您在第一个代码段中所做的那样。@dbaseman您能否将您的注释重复为答案,以便我可以将其标记为答案?这就解决了它:)