Une erreur est signalée à propos de l'enregistrement/de la fermeture du fichier : le fichier est utilisé par un autre processus, le processus ne peut donc pas accéder au fichier. ...

Cause : J'ai récemment écrit un script sur les archives de jeux sur Unity, en utilisant xml. Ensuite, j'ai constaté que chaque fois que le fichier est enregistré, c'est-à-dire lorsque la méthode objet XmlDocument.Save() est appelée, une erreur sera signalée indiquant que le chemin du fichier est partagé de manière anormale, et je ne m'en souviens pas. Et puis engagé dans une longue période, en vain. En supposant que la raison peut être que le fichier est occupé, le code est simplifié pour reproduire l'exception dans la nouvelle solution.

Comme indiqué sur l'image :

Erreur d'exécution, ligne 33, "Le fichier est utilisé par un autre processus, donc le processus ne peut pas accéder à ce fichier."

Trouvez la réponse sur Internet. Il existe également une réponse à cette exception sur Internet. Bien que leur code ne soit pas lié à xml, le principe d'erreur est le même.

La raison de l'erreur est : Le fichier est appelé par un flux. Pour enregistrer/fermer le fichier, le flux doit d'abord être fermé.

J'ai donc ajouté une phrase après avoir lu le fichier à la ligne 22

1 lecteur.Close();

Fermez le flux après avoir lu le fichier. Exécutez à nouveau, affichez "Enregistrer avec succès", le fichier Xml a bien été modifié.

 

Ci-dessous est le code modifié complet

1  utilisant le système ;
2  en utilisant System.Xml ;
3  
4  namespace XMLTest
 5  {
 6      class MyXmlReader
 7      {
 8          public XmlDocument Doc;
9 chemin          de chaîne publique  ;
10 lecteurs XmlReader
 publics ; 11 12 public MyXmlReader( string path)
 13         {
 14              Path = path;
15              Doc = nouveau XmlDocument();
16          
                       Paramètre XmlReaderSettings = new XmlReaderSettings();
17              paramètre.IgnoreComments = true ;
18              lecteur = XmlReader.Create(Path, setting);
19              Doc.Load(lecteur);
20              lecteur.Fermer();
21          }
 22  
23          public XmlNodeList GetNodeList()
 24          {
 25              XmlElement root = Doc.DocumentElement;
26              return root.ChildNodes;
27          }
 28  
29          vide public SaveDoc( string path)
 30          {
 31              Doc.Save(path);
32          }
 33      }
 34  
35      programme
 de classe 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[ " nom " ].Value = " adschbgdsc " ;
43              myReader.SaveDoc(chemin);
44              Console.Write( " Enregistrer avec succès " );
45              Console.ReadKey();
46          }
 ​​47      }
 48 }

 

Réimprimé à : https://www.cnblogs.com/Yukisora/p/7273685.html

Je suppose que tu aimes

Origine blog.csdn.net/a1808508751/article/details/101353086
conseillé
Classement