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

Арт*_*нов 4 .net c# file stream

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();
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

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

我已经全部关闭并且全部处理掉了.有什么问题?

gdo*_*ica 9

更换:

StreamReader sr=new StreamReader("c:\\file.xml");
Run Code Online (Sandbox Code Playgroud)

附:

StreamReader sr=new StreamReader(f1);
Run Code Online (Sandbox Code Playgroud)

StreamReader没有创造新的东西FileStream


其他数据:

  • StreamReader调用时Dispose,该对象调用提供的Stream对象StreamReader.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();
Run Code Online (Sandbox Code Playgroud)

但是,你真的应该使用using statement非托管资源,请阅读.