Fehlerbehebung bei File.Create(): Beheben von Dateizugriffsfehlern
Bei der Erstellung von Laufzeitdateien treten häufig Zugriffsprobleme auf. Ein häufiger Fehler ist „Der Prozess kann nicht auf die Datei zugreifen, weil sie von einem anderen Prozess verwendet wird“, auch nach der Verwendung von File.Create()
.
Das Problem
Das Szenario besteht darin, die Existenz einer Datei zu prüfen und sie bei Bedarf zu erstellen. Nachfolgende Versuche, in die Datei zu schreiben, führen zum Fehler „Datei wird verwendet“. Dies geschieht normalerweise mit Code wie diesem:
<code class="language-csharp">string filePath = string.Format(@"{0}\M{1}.dat", ConfigurationManager.AppSettings["DirectoryPath"], costCentre); if (!File.Exists(filePath)) { File.Create(filePath); } using (StreamWriter sw = File.AppendText(filePath)) { //write my text }</code>
Die Lösung
File.Create()
öffnet nur einen Dateizeiger; Es wird nicht automatisch geschlossen. Die Lösung erfordert das explizite Schließen der Datei unmittelbar nach der Erstellung mit Close()
. Darüber hinaus ist die Verwendung von File.WriteAllText()
für diesen speziellen Fall ein einfacherer Ansatz als File.AppendText()
.
Der korrigierte Code:
<code class="language-csharp">File.Create(filePath).Close(); File.WriteAllText(filePath, FileText); // Assuming FileText variable holds the text to write</code>
Wichtige Überlegung
Während diese Lösung das Dateizugriffsproblem löst, ist File.WriteAllText()
aufgrund ihres Single-Pass-Charakters nicht optimal für große Textdateien. Erwägen Sie bei großen Dateien effizientere Methoden wie das Streamen der Daten mit StreamWriter
für eine bessere Leistung.
Das obige ist der detaillierte Inhalt vonWarum verursacht File.Create() den Fehler „Datei wird verwendet' und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!