关于文件保存/关闭时报错:文件正由另一进程使用,因此该进程无法访问此文件。...
生活随笔
收集整理的這篇文章主要介紹了
关于文件保存/关闭时报错:文件正由另一进程使用,因此该进程无法访问此文件。...
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
起因:最近給Unity上的游戲?qū)戧P(guān)于存檔的腳本,使用了xml。然后發(fā)現(xiàn)每次文件保存時(shí),也就是調(diào)用XmlDocument.Save()對象方法的時(shí)候就會報(bào)錯(cuò)說該文件路徑分享異常啥的我也不記得了。然后搞了半天,無果。猜測原因可能是因?yàn)槲募徽加玫脑?#xff0c;遂簡化代碼在新的解決方案里重現(xiàn)異常。
如圖:
運(yùn)行報(bào)錯(cuò),第33行,“文件正由另一進(jìn)程使用,因此該進(jìn)程無法訪問此文件。”
網(wǎng)上找答案,這個(gè)異常網(wǎng)上也有答案,雖然他們的代碼不是xml相關(guān)的但是錯(cuò)誤原理相同。
錯(cuò)誤原因是:文件正在被流調(diào)用。要想保存/關(guān)閉文件,必須先關(guān)閉流。
于是我在第22行文件讀取過后,添加了一句
1 reader.Close();讀取完文件之后把流關(guān)掉。再次運(yùn)行,顯示“Save Successfully”,Xml文件也確實(shí)被修改了。
?
下面附上修改后的完整代碼
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 }?
轉(zhuǎn)載于:https://www.cnblogs.com/Yukisora/p/7273685.html
總結(jié)
以上是生活随笔為你收集整理的关于文件保存/关闭时报错:文件正由另一进程使用,因此该进程无法访问此文件。...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WCF采用 netTcpBinding
- 下一篇: EasyUI + Bootstrap 界