当Form加载时,我读取文件
string line;
if (!File.Exists(dir)) File.Create(dir);
StreamReader reader = new StreamReader(dir);
while ((line = reader.ReadLine()) != null)
{ /* do something */}
reader.Close();
然后我按下按钮,在这个文件里写一些东西。但在线
System.IO.StreamWriter file = new StreamWriter(dir);
我有一个错误"文件被另一个进程使用"。为什么?我关闭了我的阅读器。。
File.Create
打开文件并返回FileStream
。尝试:
using (var fs = File.Open(dir, FileMode.OpenOrCreate))
{
using (var reader = new StreamReader(fs))
{
while ((line = reader.ReadLine()) != null)
{ /* do something */}
}
}
编辑
你也可以做
if (!File.Exists(dir)) File.Create(dir).Close();
以确保流关闭
这两行冲突:
if (!File.Exists(dir)) File.Create(dir);
StreamReader reader = new StreamReader(dir);
因为File.Create()创建了一个新文件,并且保持其打开。因此,阻止打开StreamReader的文件。
在API级别上,File.Create()并不是你想的那样。它与Directory.Create().非常不同
但从功能上讲,您的代码也没有意义,为什么要在读取之前创建一个新文件?它将永远是空的。
只需使用
if (File.Exitst(dir))
{
var lines = System.IO.File.ReadLines(dir);
foreach(string line in lines) { /* do something */ }
}