写入现有文件时,Streamwriter崩溃

时间:2013-07-24 05:12:19

标签: 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) =>
    {
       progressBar2.PerformStep();
    }, null);
}

writer.Close();

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

错误:

  

mscorlib.dll中出现未处理的“System.IO.IOException”类型异常

     

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

2 个答案:

答案 0 :(得分:0)

可能问题是您打开文件但在退出程序时不要关闭它。我看到你正在使用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
}

答案 1 :(得分:0)

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

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

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