访问已处理文件时出错

时间:2013-11-07 22:14:03

标签: file exception file-io streamwriter

我遇到了问题。在我的程序中,我在桌面上创建了一个文件:

        var desktopFolder = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
        var fullFileName = Path.Combine(desktopFolder, "Report.txt");
        var fs = new FileStream(fullFileName, FileMode.Create);

        StreamWriter sw = new StreamWriter(fs);

[...写入档案......]

        sw.WriteLine("Report generated with***.");
        sw.Flush();
        sw.Close();
        sw.Dispose();
        fs.Close();
        fs.Dispose();

以后,文件完成后,我再次阅读:

        FileInfo fi = new FileInfo(fullFileName);
        StreamReader objReader = new StreamReader(fi.OpenRead());
        string sLine = "";
        while (sLine != null)
        {
            sLine = objReader.ReadLine();
            if (sLine != null)
            {
                Report.Items.Add(sLine);
            }
        }

问题是,如果我尝试两次读取文件,则会收到错误:进程无法访问该文件,因为它正由另一个进程使用。有什么想法可能有什么问题吗?

2 个答案:

答案 0 :(得分:1)

这很可能是因为在尝试使用Close()打开或访问文件之前未正确调用StreamWriter上的StreamReader方法。关闭帖子中的片段后,您需要在使用StreamWriter将所需内容写入文件后进行以下调用。

sw.Close();

答案 1 :(得分:0)

使用此代码处理文件

using (StreamWriter s = new StreamWriter(/* your arguments here *\)) {
    // code that uses it here
}
// file is closed here