我在表单加载时读取文件
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);
我有一个错误"另一个进程使用的文件"。为什么?我关闭了我的读者..
答案 0 :(得分:4)
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();
确保关闭流
答案 1 :(得分:2)
这两行冲突:
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 */ }
}