流写入程序在写入现有文件时崩溃

本文关键字:文件 崩溃 程序 | 更新日期: 2023-09-27 18:24:41

以下是我写入几个文件的代码:

StreamWriter writer = new StreamWriter(@"C:'TotalStock'data'points'" + stockName.ToUpper() + ".txt");
for(int i = 0; i < lines; i++)
{
   writer.WriteLine(lineData[i]);
   postGui.Send((object state) =>
    {
       progressBar2.PerformStep();
    }, null);
}
writer.Close();

当我删除文本文件并运行代码时,没有问题,但当我关闭应用程序并再次运行时,程序会给我以下错误。是什么导致了这个错误,我该怎么做才能阻止它?

错误:

mscorlib.dll 中发生类型为"System.IO.IOException"的未处理异常

附加信息:进程无法访问文件"C:''TotalStock''data''points''IBM.txt",因为它正被另一个进程使用

流写入程序在写入现有文件时崩溃

正如marc_s所指出的,发生错误的原因是您试图编辑的文件被另一个应用程序打开。如果您确信您没有在任何其他编辑器/查看器中打开该文件,则问题可能是程序本身。

如果同一代码的多个实例同时运行,并且需要访问同一文件,例如在多线程环境中。

当您尝试写入文本文件时,应用程序中的另一个组件是否从该文件中读取
您的应用程序是否挂起,而第二个实例需要相同的文件
你每次都运行相同的测试吗?

问题可能是您打开了文件,但在退出程序时没有关闭它。我看到您正在使用StreamWriter将数据写入文件。您可能会得到一个异常,因此不会关闭该文件。当玩文件时,你应该总是这样做:

try
{
   // Your code with files
}
catch
{
}
finally
{
   writer.Close();
}

其他原因可能是您正在使用其他一些文件/流等。请确保在关闭程序之前关闭了所有需要关闭的成员。

如果你想让我们检查你是否忘记了其他东西,请分享你的所有代码

正如Sayse所说,另一种确保你关闭作家的方法是使用声明:

using(StreamWriter writer = new StreamWriter(@"C:'TotalStock'data'points'" + stockName.ToUpper() + ".txt");)
{
    // Your code of playing with files
}