Se informa un error sobre guardar/cerrar el archivo: El archivo está siendo utilizado por otro proceso, por lo que el proceso no puede acceder al archivo. ...

Causa: Recientemente escribí un script sobre archivos para juegos en Unity, usando xml. Luego descubrí que cada vez que se guarda el archivo, es decir, cuando se llama al método del objeto XmlDocument.Save(), se informa un error que dice que la ruta del archivo se comparte de manera anormal y no lo recuerdo. Y luego participó en un largo tiempo, en vano. Adivinando que la razón puede ser porque el archivo está ocupado, el código se simplifica para reproducir la excepción en la nueva solución.

Como se muestra en la imagen:

Error de ejecución, línea 33, "Otro proceso está utilizando el archivo, por lo que el proceso no puede acceder a este archivo".

Encuentre la respuesta en Internet. También hay una respuesta a esta excepción en Internet. Aunque su código no está relacionado con xml, el principio de error es el mismo.

El motivo del error es: el archivo está siendo llamado por una secuencia. Para guardar/cerrar el archivo, la transmisión debe cerrarse primero.

Así que agregué una oración después de leer el archivo en la línea 22

1 lector.Cerrar();

Cierre la transmisión después de leer el archivo. Vuelva a ejecutar, muestre "Guardar con éxito", el archivo Xml se ha modificado.

 

Se adjunta a continuación el código modificado completo

1  utilizando el sistema;
2  usando System.Xml;
3  
4  espacio de nombres XMLTest
 5  {
 6      clase MyXmlReader
 7      {
 8          public XmlDocument Doc;
9 ruta          de cadena pública  ;
10 lectores públicos de XmlReader;
11 12 public MyXmlReader( cadena ruta)
 13         {
 14              Ruta = ruta;
15              Doc = nuevo DocumentoXml();
dieciséis          
                       Configuración de XmlReaderSettings = new XmlReaderSettings();
17              configuración.IgnorarComentarios = verdadero ;
18              lector = XmlReader.Create (ruta, configuración);
19              Doc.Load(lector);
20              lector.Cerrar();
21          }
 22  
23          public XmlNodeList GetNodeList()
 24          {
 25              XmlElement root = Doc.DocumentElement;
26              return root.ChildNodes;
27          }
 28  
29          vacío público SaveDoc( ruta de cadena )
 30          {
 31              Doc.Save(ruta);
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(ruta);
41              XmlNodeList nodeList = myReader.GetNodeList();
42             nodeList[ 1 ].Attributes[ " name " ].Value = " adschbgdsc " ;
43              myReader.SaveDoc(ruta);
44              Console.Write ( " Guardar con éxito " );
45              Consola.ReadKey();
46          }
 ​​47      }
 48 }

 

Reimpreso en: https://www.cnblogs.com/Yukisora/p/7273685.html

Supongo que te gusta

Origin blog.csdn.net/a1808508751/article/details/101353086
Recomendado
Clasificación