原因: 最近、xml を使用して、Unity 上のゲームのアーカイブに関するスクリプトを作成しました。その後、ファイルが保存されるたびに、つまり XmlDocument.Save() オブジェクト メソッドが呼び出されるたびに、ファイル パスが異常に共有されているというエラーが報告されることがわかりましたが、それを覚えていませんでした。そして、長い間従事しましたが、無駄でした。ファイルが占有されていることが原因である可能性があると推測し、新しいソリューションで例外を再現するためにコードを簡略化します。
図に示すように:
実行エラー、行 33、「ファイルは別のプロセスによって使用されているため、プロセスはこのファイルにアクセスできません。」
インターネットで答えを見つけてください。この例外に対する答えもインターネット上にあります。コードは XML に関連していませんが、エラーの原理は同じです。
エラーの理由は次のとおりです。 ファイルはストリームによって呼び出されています。ファイルを保存/閉じるには、まずストリームを閉じる必要があります。
そこで、ファイルを読んだ後、22行目に文を追加しました
1リーダー.Close();
ファイルを読み取った後、ストリームを閉じます。もう一度実行すると、「正常に保存されました」と表示され、Xml ファイルが実際に変更されました。
完全に変更されたコードを以下に添付します。
1システム を使用します。 2 System.Xml を使用します。 3 4 名前空間XMLTest 5 { 6 クラスMyXmlReader 7 { 8 public XmlDocument Doc; 9 パブリック 文字列パス。 10 パブリックXmlReader リーダー。 11 12 public MyXmlReader(文字列パス) 13 { 14 パス =パス; 15 ドキュメント =新しいXmlDocument(); 16 XmlReaderSettings 設定 = new XmlReaderSettings(); 17 設定.IgnoreComments = true ; 18 リーダー = XmlReader.Create(パス, 設定); 19 ドキュメントロード(リーダー); 20 リーダー.Close(); 21 } 22 23 public XmlNodeList GetNodeList() 24 { 25 XmlElement root = Doc.DocumentElement; 26 root.ChildNodes を返します。 27 } 28 29 パブリック ボイドSaveDoc(文字列パス) 30 { 31 Doc.Save(パス); 32 } 33 } 34 35 クラスプログラム 36 { 37 static void Main( string [] args) 38 { 39 string path = @" F:\C#\XMLTest\XMLTest\NewOne.xml " ; 40 MyXmlReader myReader =新しいMyXmlReader(パス); 41 XmlNodeList ノードリスト = myReader.GetNodeList(); 42 nodeList[ 1 ].Attributes[ " name " ].Value = " adschbgdsc " ; 43 myReader.SaveDoc(パス); 44 Console.Write( "正常に保存されました" ); 45 コンソール.ReadKey(); 46 } 47 } 48 }
転載先:https://www.cnblogs.com/Yukisora/p/7273685.html