进程无法使用流编写器访问文件

  • 本文关键字:访问 文件 进程 c# file
  • 更新时间 :
  • 英文 :


当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 */ }
}

相关内容

  • 没有找到相关文章

最新更新