J'ai une simple fonction C# qui crée un fichier XML de base et enregistre:XmlDocument Enregistrer conserve fichier ouvert
private void CreateXMlFile(string Filename, string Name, string Company)
{
XmlDocument doc = new XmlDocument();
XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
doc.AppendChild(docNode);
XmlNode licenseNode = doc.CreateElement("license");
doc.AppendChild(licenseNode);
XmlNode node = doc.CreateElement("Name");
node.AppendChild(doc.CreateTextNode(Name));
licenseNode.AppendChild(node);
node = doc.CreateElement("Company");
node.AppendChild(doc.CreateTextNode(Company));
licenseNode.AppendChild(node);
doc.Save(Filename);
}
Lorsque je tente de modifier ou de supprimer le fichier que je reçois toujours l'erreur suivante:
The process cannot access the file because it is being used by another process.
XmlDocument ne dispose pas de routines de fermeture ou de fermeture intégrées et je me demandais comment je pouvais forcer la fermeture du fichier avant de le modifier ou de le supprimer ultérieurement.
J'ai essayé d'enregistrer le fichier en utilisant StreamWriter:
StreamWriter outStream = System.IO.File.CreateText(outfile);
outStream.Write(data);
outStream.Close();
Mais cela na pas faire une différence avec la même erreur.
Votre avis est grandement accepté.
Merci
Avez-vous essayé de l'écrire avec une instance d'un flux d'écriture au lieu de passer le nom de fichier à enregistrer? – Steve
J'ai eu le même problème, mais mon code chargeait le code XML en premier s'il existait. L'objet 'XmlReader' devait être fermé avant que le verrou sur le fichier ne soit libéré. –