Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Streamwriter在写入现有文件时崩溃_C#_File_Exception_Streamwriter - Fatal编程技术网

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最后这条路让我受益良久。。。我将在我的答案中添加使用方法,我们将称之为休战,好吗?正如我所说,这里的问题是,只有当文件已经存在时,它才有这个问题。如果我删除该文件,然后运行该程序,我不会询问在应用程序中读取该文件的错误,因为这应该是唯一的解释,应该是。。。另一件事,在创建文档并且应用程序正在运行后尝试删除该文档。