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
方法。阅读此内容以获取更多信息。
含义:您可以删除Dispose
和Close
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。