File 访问已处理文件时出错
我面临一个问题。在我的程序中,我在桌面上创建了一个文件:File 访问已处理文件时出错,file,exception,file-io,streamwriter,File,Exception,File Io,Streamwriter,我面临一个问题。在我的程序中,我在桌面上创建了一个文件: var desktopFolder = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); var fullFileName = Path.Combine(desktopFolder, "Report.txt"); var fs = new FileStream(fullFileName, FileMo
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);
}
}
问题是,如果我尝试读取文件两次,我会得到一个错误:进程无法访问该文件,因为它正被另一个进程使用。有什么问题吗?这很可能是因为在尝试使用
StreamReader
打开或访问文件之前,没有正确调用StreamWriter
上的Close()
方法造成的。从文章中的代码片段开始,在使用StreamWriter
将所有需要的内容写入文件后,您需要进行以下调用
sw.Close();
使用此代码处理文件
using (StreamWriter s = new StreamWriter(/* your arguments here *\)) {
// code that uses it here
}
// file is closed here
谢谢你指出这一点——实际上我已经结束了,我已经在我原来的帖子中添加了这些命令。我似乎从来不知道我需要发布代码的哪些部分:-不管怎样,在第二次读取时,它给了我这个错误,第一次顺利通过……当你说“读取文件两次”时,你是指循环的两次迭代,还是你实际上正在创建另一个
StreamReader
实例并再次传入文件流。我正在重新创建它。