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您能否将您的注释重复为答案,以便我可以将其标记为答案?这就解决了它:)