该进程无法访问该文件,因为它正由另一个进程使用

本文关键字:进程 另一个 访问 文件 因为 | 更新日期: 2023-09-27 18:34:31

public bool ReadFile()
    {
        string fname = "text.txt";
        FileStream fs = null;
        fs = new FileStream(fname, FileMode.OpenOrCreate,FileAccess.Read);
        StreamReader sr = new StreamReader(fs);
        string res = sr.ReadToEnd();
        if (res == "1")
            return true;
        else
            return false;
    }
public void WriteToFile()
    {
        string fname = "text.txt";
        FileStream fs = null;
        fs = new FileStream(fname, FileMode.Open,FileAccess.Write);
        StreamWriter sw = new StreamWriter(fs);
        sw.Write("1");
    }

所以它应该像 ReadFile 返回 false 而不是我返回 WriteFile 一样工作。但是当它到达写文件时,它会抛出 IO 期望:

进程无法访问该文件...因为它正被另一个进程使用

该进程无法访问该文件,因为它正由另一个进程使用

读取文件时未关闭文件。

将 FileStream 和 StreamReader 对象放在 using 语句中:

using (var fs = new FileStream(fname, FileMode.OpenOrCreate,FileAccess.Read)) {
  using (var sr = new StreamReader(fs)) {
    //read file here
  }
}

请确保在写入文件时执行相同的操作。

您需要在 ReadFile 方法中释放 StreamReader 对象。StreamReader 继承自 IDisposable,因此您需要释放对象。

查看此链接以获取更多信息:流阅读器类