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',因为它正由另一个进程
使用
我已经全部关闭并且全部处理掉了。有什么问题?
答案 0 :(得分:9)
替换:
StreamReader sr=new StreamReader("c:\\file.xml");
使用:
StreamReader sr=new StreamReader(f1);
您正在创建没有StreamReader
FileStream
其他数据:
调用StreamReader
时,Dispose
对象会在提供的Stream对象上调用StreamReader.Dispose
。
Dispose
方法调用Close
方法。请阅读this了解详情。
含义:您可以移除您在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();
但是真的应该使用{{1>} 非托管资源,请阅读this。
答案 1 :(得分:2)
您在同一个文件上有一个FileStream和一个StreamReader。 删除这一行:
FileStream f1=new FileStream("c:\\file.xml",FileMode.Open);
答案 2 :(得分:2)
更改
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");
所以每个人都试图单独访问teh文件,而将代码更改为我的连接情况sr来访问文件通过f1
答案 3 :(得分:1)
问题可能在:
FileStream f1=new FileStream("c:\\file.xml",FileMode.Open);
StreamReader sr=new StreamReader("c:\\file.xml");
Filestream可能正在访问该文件,然后StreamReader尝试单独访问该文件。尝试让StreamReader使用相同的Stream。