在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());
}
另外:我只是想更新文件,读写。有更好的方法吗?
答案 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();
}