XmlDocument Enregistrer garde d'ouverture de fichier
J'ai un simple c# fonction qui crée un fichier XML et qui sauve:
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 j'essaie de modifier ou de supprimer le fichier j'obtiens toujours l'erreur suivante:
Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre
processus.
XmlDocument ne pas avoir tout intégré éliminer ou à proximité des routines et je me demandais comment je peux forcer le fichier pour fermer avant de les éditer plus tard ou de les supprimer.
J'ai essayé d'enregistrer le fichier à l'aide de StreamWriter:
StreamWriter outStream = System.IO.File.CreateText(outfile);
outStream.Write(data);
outStream.Close();
Mais ce n'est pas faire une différence avec le même message d'erreur.
Votre avis est largement accepté.
Merci
Avez-vous essayé de l'écrire avec une instance d'un flux d'écriture au lieu de passer le nom de fichier pour enregistrer?
J'ai eu le même problème, mais mon code était en train de charger le XML d'abord si elle existait. Le
J'ai eu le même problème, mais mon code était en train de charger le XML d'abord si elle existait. Le
XmlReader
objet devait être fermé avant que le verrou sur le fichier a été libéré.OriginalL'auteur Belliez | 2012-02-17
Vous devez vous connecter pour publier un commentaire.
Envoyer des Flux de XmlDocument de la méthode d'enregistrement au lieu de nom de fichier.
J'ai essayé de l'exécution de code ci-dessus et il fonctionne très bien sur ma fin.
Pouvez-vous essayer de changer l'emplacement du fichier?
essayé nouvel emplacement aussi et même. J'ai aussi désactivé Livedrive (sauvegarde en ligne) dans le cas où des interférences.
Ce problème a été hanté moi pour quelques jours XMLDocument.Save() semble rincer correctement en mode débogage toutefois, lorsque à la Libération, il ne le fait pas. À l'aide d'un Flux résolu le problème, merci.
Avez-vous finalement pensé à elle? J'ai actuellement le même problème.
OriginalL'auteur AshokD
Votre code est bien. Je l'ai testé sur ma machine et il n'y a pas de serrure à gauche après Save().
Essayez d'utiliser Unlocker (http://www.softpedia.com/get/System/System-Miscellaneous/Unlocker.shtml pour vérifier si vous êtes vraiment celui qui détient le verrou.
Qui .NET framework utilisez-vous? Theres également un rapport (http://bytes.com/topic/net/answers/467028-xmldocument-save-does-not-close-file-properly) qui n'a pas été reproduit trop.
Pourriez-vous créer un projet vide cette méthode est appelée par un clic de bouton et vérifier après le clic si le fichier est verrouillé?
OriginalL'auteur BlueM