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

时间:2016-02-14 20:56:20

标签: c# windows-phone

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。 但是当它到达writefile时,它会抛出IO期望:

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

2 个答案:

答案 0 :(得分:3)

阅读时你没有关闭文件。

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

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

确保在写入文件时也这样做。

答案 1 :(得分:0)

您需要在ReadFile方法中部署StreamReader对象。 StreamReader继承自IDisposable,因此您需要处理该对象。

点击此链接了解详情:StreamReader Class