码迷,mamicode.com
首页 > 系统相关 > 详细

关于文件保存/关闭时报错:文件正由另一进程使用,因此该进程无法访问此文件。

时间:2017-08-02 15:07:27      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:ade   分享   reader   image   原理   lis   访问   src   ring   

起因:最近给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 = "adschbgdsc";
43             myReader.SaveDoc(path);
44             Console.Write("Save Successfully");
45             Console.ReadKey();
46         }
47     }
48 }

 

关于文件保存/关闭时报错:文件正由另一进程使用,因此该进程无法访问此文件。

标签:ade   分享   reader   image   原理   lis   访问   src   ring   

原文地址:http://www.cnblogs.com/Yukisora/p/7273685.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!