进程无法访问已打开的文件
本文关键字:文件 访问 进程 | 更新日期: 2023-09-27 18:01:59
运行在wince 5.0/.net framework compact 2.0上的代码
总是得到一个异常表示:
进程不能访问该文件,因为它正在被另一个进程使用。
真的很困惑,因为我已经在using语句中包含了流,所以文件流应该在离开using块后自动关闭。
//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());
}
补充:我只是想更新文件,读写。有更好的办法吗?
对不起,这个问题是在我的代码,我在这里混淆了你,因为我不分享代码。
因为我在程序的开头写了这个
// f is the fileinfo which point to fname as well
string text = f.OpenText().ReadToEnd();
这创建了一个流阅读器,没有被分配给任何变量,但它在堆中。所以我忽略了。
谢谢大家的帮助。顺便说一句,把代码改成这个,然后问题就解决了
using (StreamReader sr = f.OpenText())
{
string text = sr.ReadToEnd();
}
我在我的计算机上测试了这段代码。没有问题。
更好的方法。对于读写完整文件,可以使用File.ReadAllText(fname)
和File.WriteAllText(fname)
。用Environment.NewLine
代替'n