由于已经打开,该进程无法访问文件

时间:2014-05-07 06:05:58

标签: c#

在wince 5.0 / .net framework compact 2.0上运行的代码 总是得到例外说:

  

该进程无法访问该文件,因为该文件正由另一个进程使用。

真的很困惑,因为我已经在使用语句中包含了流,所以一旦离开使用块,文件流应该自动关闭。

//read text
using (StreamReader sr = File.OpenText(fname))
{
  string line;
  while ((line = sr.ReadLine()) != null)
  {
    // append into stringbuilder
    sb.Append(line);
    sb.Append("\n");
  }
}
//write text, below code raise the exception. 
//if i comment it and re-run the code,exception disappear
using (StreamWriter sw = File.CreateText(fname))
{
  sw.Write(sb.ToString());
}

另外:我只是想更新文件,读写。有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

我在计算机上测试了这段代码。没问题。

更好的方式。对于读写完整文件,您可以使用File.ReadAllText(fname)File.WriteAllText(fname)。而不是使用\n使用Environment.NewLine

答案 1 :(得分:0)

抱歉,伙计们,问题出现在我的代码中,我把你弄糊涂了,因为我不会分享那些代码 实际上是因为我在程序的最开始就写了这个

// f is the fileinfo which point to fname as well
string text = f.OpenText().ReadToEnd();

这创建了一个streamreader,没有分配给任何变量,但是它在堆中。所以我忽略了。
谢谢人们在这里。 BTW改变了代码然后问题消失了

using (StreamReader sr = f.OpenText())
{
   string text = sr.ReadToEnd();
}