C# Streamwriter在写入现有文件时崩溃
以下是我编写到几个文件的代码:C# Streamwriter在写入现有文件时崩溃,c#,file,exception,streamwriter,C#,File,Exception,Streamwriter,以下是我编写到几个文件的代码: 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) => { progressBar
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();
StreamWriter writer=newstreamwriter(@“C:\TotalStock\data\points\”+stockName.ToUpper()+“.txt”);
对于(int i=0;i
{
progressBar2.PerformStep();
},空);
}
writer.Close();
当我删除文本文件并运行代码时没有问题,但是当我关闭应用程序并再次运行它时,程序会给出以下错误。是什么导致了这个错误?我能做些什么来阻止它
错误:
mscorlib.dll中发生类型为“System.IO.IOException”的未处理异常
其他信息:进程无法访问文件“C:\TotalStock\data\points\IBM.txt”,因为其他进程正在使用该文件
问题可能是您在退出程序时打开了该文件,但没有将其关闭。我看到您正在使用
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
}
正如marc_指出的,发生错误的原因是您试图编辑的文件被另一个应用程序打开。如果您确定没有在任何其他编辑器/查看器中打开该文件,则问题可能出在程序本身 如果同一代码的多个实例同时运行并需要访问同一文件,例如在多线程环境中 当您试图写入文本文件时,应用程序中的另一个组件是否从该文本文件中读取?
应用程序是否挂起,而第二个实例需要相同的文件?
您每次都运行相同的测试吗?显然,您试图覆盖的文件是在某种应用程序中打开的,因此它“正在使用”,无法删除。这是我的观点,它不是一种有效的方法,我认为这是唯一有效的方法,也是唯一能保证事情会按你的预期处理的方法to@Sayse最后这条路让我受益良久。。。我将在我的答案中添加使用方法,我们将称之为休战,好吗?正如我所说,这里的问题是,只有当文件已经存在时,它才有这个问题。如果我删除该文件,然后运行该程序,我不会询问在应用程序中读取该文件的错误,因为这应该是唯一的解释,应该是。。。另一件事,在创建文档并且应用程序正在运行后尝试删除该文档。