文件流正由另一个进程使用


FileStream f=new FileStream("c:\file.xml",FileMode.Create);
StreamWriter sf=new StreamWriter(f);
sf.WriteLine(stroka);
sf.Close();
sf.Dispose();
f.Close();
f.Dispose();
FileStream f1=new FileStream("c:\file.xml",FileMode.Open);
StreamReader sr=new StreamReader("c:\file.xml");
xmlreader=new XmlTextReader(sr);
sr.Close();
sr.Dispose();
f1.Close();
f1.Dispose();

我收到此错误:

进程无法访问文件"c:\file.xml,因为它正被另一个进程使用

我已经关闭了所有并处理了所有内容。怎么了?

替换:

StreamReader sr=new StreamReader("c:\file.xml");

跟:

StreamReader sr=new StreamReader(f1);

您正在创建新StreamReader而没有FileStream


附加数据:

  • 调用 StreamReader.Dispose 时,StreamReader对象在提供的 Stream 对象上调用Dispose

  • Dispose方法调用Close方法。阅读此内容以获取更多信息。

含义:您可以删除DisposeClose

写在FileStream
FileStream f = new FileStream("c:\file.xml", FileMode.Create);
StreamWriter sf = new StreamWriter(f);
sf.WriteLine(stroka);
sf.Dispose();
FileStream f1 = new FileStream("c:\file.xml", FileMode.Open);
StreamReader sr = new StreamReader(f1);
xmlreader = new XmlTextReader(sr);
sr.Dispose();

但是,您确实应该将using statement用于非托管资源,请阅读此内容。

您在同一个文件上有一个 FileStream 和一个 StreamReader。删除此行:

FileStream f1=new FileStream("c:\file.xml",FileMode.Open);     

更改

StreamReader sr=new StreamReader("c:\file.xml"); 

StreamReader sr=new StreamReader(f1); 

以下两行代码都是尝试访问同一文件的独立对象:

FileStream f1=new FileStream("c:\file.xml",FileMode.Open); 
StreamReader sr=new StreamReader("c:\file.xml"); 

所以每个人都在尝试单独访问文件,而将您的代码更改为我的连接案例 SR 以通过 f1 访问文件

问题可能出在:

FileStream f1=new FileStream("c:\file.xml",FileMode.Open);
StreamReader sr=new StreamReader("c:\file.xml");

Filestream 可能正在访问该文件,然后 StreamReader 尝试单独访问该文件。尝试让您的 StreamReader 使用相同的定义 Stream。

相关内容

  • 没有找到相关文章

最新更新