流写入程序在写入现有文件时崩溃
本文关键字:文件 崩溃 程序 | 更新日期: 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
}