我遇到了问题。在我的程序中,我在桌面上创建了一个文件:
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);
}
}
问题是,如果我尝试两次读取文件,则会收到错误:进程无法访问该文件,因为它正由另一个进程使用。有什么想法可能有什么问题吗?
答案 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