C# 另一个进程正在使用文件流
我得到这个错误: 进程无法访问文件“c:\file.xml”,因为另一个进程正在使用该文件 我把所有的都关了,处理掉了。有什么问题吗?更换:C# 另一个进程正在使用文件流,c#,.net,file,stream,C#,.net,File,Stream,我得到这个错误: 进程无法访问文件“c:\file.xml”,因为另一个进程正在使用该文件 我把所有的都关了,处理掉了。有什么问题吗?更换: 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(); FileStrea
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();
与:
StreamReader sr=new StreamReader("c:\\file.xml");
您正在创建新的StreamReader
,而不使用FileStream
StreamReader sr=new StreamReader(f1);
其他数据:
- 调用
时,StreamReader.Dispose
对象对提供的流对象调用StreamReader
Dispose
方法调用Dispose
方法。阅读更多信息Close
文件流上编写的Dispose
和Close
StreamReader sr=new StreamReader(f1);
但是您确实应该使用using语句来读取非托管资源。您在同一个文件上有一个FileStream和一个StreamReader。
删除此行:
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();
改变
FileStream f1=new FileStream("c:\\file.xml",FileMode.Open);
到
以下两行代码都是试图访问同一文件的独立对象:
StreamReader sr=new StreamReader(f1);
因此,每个人都试图单独访问该文件,而将您的代码更改为my connection cases sr以通过f1访问该文件。问题可能出在:
FileStream f1=new FileStream("c:\\file.xml",FileMode.Open);
StreamReader sr=new StreamReader("c:\\file.xml");
Filestream可能正在访问该文件,然后StreamReader尝试单独访问该文件。请尝试让您的StreamReader使用相同的已定义流。我遇到了这个问题,请注意,您应该在“处理”之前“关闭”流@Mironline。这是自动完成的。阅读我所有的答案。。。你可以看到他在做什么
FileStream f1=new FileStream("c:\\file.xml",FileMode.Open);
StreamReader sr=new StreamReader("c:\\file.xml");