首页 > 代码库 > 关于文件保存/关闭时报错:文件正由另一进程使用,因此该进程无法访问此文件。
关于文件保存/关闭时报错:文件正由另一进程使用,因此该进程无法访问此文件。
起因:最近给Unity上的游戏写关于存档的脚本,使用了xml。然后发现每次文件保存时,也就是调用XmlDocument.Save()对象方法的时候就会报错说该文件路径分享异常啥的我也不记得了。然后搞了半天,无果。猜测原因可能是因为文件被占用的原因,遂简化代码在新的解决方案里重现异常。
如图:
运行报错,第33行,“文件正由另一进程使用,因此该进程无法访问此文件。”
网上找答案,这个异常网上也有答案,虽然他们的代码不是xml相关的但是错误原理相同。
错误原因是:文件正在被流调用。要想保存/关闭文件,必须先关闭流。
于是我在第22行文件读取过后,添加了一句
1 reader.Close();
读取完文件之后把流关掉。再次运行,显示“Save Successfully”,Xml文件也确实被修改了。
下面附上修改后的完整代码
1 using System; 2 using System.Xml; 3 4 namespace XMLTest 5 { 6 class MyXmlReader 7 { 8 public XmlDocument Doc; 9 public string Path; 10 public XmlReader reader; 11 12 public MyXmlReader(string path) 13 { 14 Path = path; 15 Doc = new XmlDocument(); 16 XmlReaderSettings setting = new XmlReaderSettings(); 17 setting.IgnoreComments = true; 18 reader = XmlReader.Create(Path, setting); 19 Doc.Load(reader); 20 reader.Close(); 21 } 22 23 public XmlNodeList GetNodeList() 24 { 25 XmlElement root = Doc.DocumentElement; 26 return root.ChildNodes; 27 } 28 29 public void SaveDoc(string path) 30 { 31 Doc.Save(path); 32 } 33 } 34 35 class Program 36 { 37 static void Main(string[] args) 38 { 39 string path = @"F:\C#\XMLTest\XMLTest\NewOne.xml"; 40 MyXmlReader myReader = new MyXmlReader(path); 41 XmlNodeList nodeList = myReader.GetNodeList(); 42 nodeList[1].Attributes["name"].Value = http://www.mamicode.com/"adschbgdsc"; 43 myReader.SaveDoc(path); 44 Console.Write("Save Successfully"); 45 Console.ReadKey(); 46 } 47 } 48 }
关于文件保存/关闭时报错:文件正由另一进程使用,因此该进程无法访问此文件。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。