Der Prozess kann nicht auf die Datei zugreifen 'C:\file.xml" weil es wird von einem anderen Prozess verwendet
DirectoryInfo dir=new DirectoryInfo(path);
if (!dir.Exists)
{
Directory.CreateDirectory(path);
File.Create(path + "\\file.xml");
StreamWriter sw =new StreamWriter(path + "\\file.xml");
sw.Flush();
sw.Write("<?xml version='1.0' encoding='utf-8' ?><project></project>");
}
Fehler:
Der Prozess kann nicht auf die Datei zugreifen 'C:\file.xml' denn es ist seins
von einem anderen Prozess verwendet.
warum? Wie können die Datei schließen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus MSDN
Das FileStream-Objekt erstellt, mit dieser Methode ("Datei.Erstellen) hat eine default-FileShare-Wert None; kein anderer Prozess oder code, der Zugriff auf die erstellte Datei, bis das ursprüngliche Dateihandle geschlossen wird.
Damit die Problemumgehung ist
EDIT: Geändert, entfernen der Schaffung des StreamWriter und mithilfe einer FileStream
Aber ich weiß nicht, wie diese Art und Weise, wie vorgeschlagen, von der MSDN-Website.
StreamWriter hat einen Konstruktor, der ein FileStream, aber ich dachte, dass, wenn wir
bekommen wir wieder die locking-problem. Jedoch habe ich getestet und es funktioniert.
Wohl die StreamWriter-Konstruktor einige tricks auf den FileStream zurückgegeben Datei.Erstellen.
verwenden
File.Create
oderStreamWriter
, nicht beideÄndern
Zu
Tun
sw.Close();
nach, die Sie angerufen habenWrite();
Sollten Sie vielleicht besser mit XmlDocument. Dann können Sie die append-Knoten, wie Knoten etc.
XmlDocument hat eine eingebaute Speicherfunktion, so dass Sie nicht haben, um zu verwalten, wie ein streamwriter.