关于文件保存/关闭时报错:文件正由另一进程使用,因此该进程无法访问此文件。...
生活随笔
收集整理的這篇文章主要介紹了
关于文件保存/关闭时报错:文件正由另一进程使用,因此该进程无法访问此文件。...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
起因:最近給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 }?
轉載于:https://www.cnblogs.com/Yukisora/p/7273685.html
總結
以上是生活随笔為你收集整理的关于文件保存/关闭时报错:文件正由另一进程使用,因此该进程无法访问此文件。...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WCF采用 netTcpBinding
- 下一篇: EasyUI + Bootstrap 界