Nein, Sie müssen die Datei nicht explizit schließen, File.ReadAllText
erledigt das für Sie.
Die Dokumentation enthält diese Informationen sehr explizit:
Diese Methode öffnet eine Datei, liest jede Zeile der Datei und fügt dann jede Zeile als Element einer Zeichenfolge hinzu. Es schließt dann die Datei.
[...]
Das Dateihandle wird garantiert durch diese Methode geschlossen, auch wenn Ausnahmen ausgelöst werden.
Sie müssen nichts schließen, wenn Sie File.ReadAllText
verwenden, da der Leseprozess für den Underling-Stream implizit geschlossen ist.
Öffnet eine Textdatei, liest alle Zeilen der Datei und schließt dann die Datei .
Hier ist die Implementierung in .NET 4 (ILSpy):
%Vor% Die using
Anweisung entbindet die StreamReader
(auch bei Fehler), die sie auch schließt.
Ich weiß, dass diese Frage beantwortet wurde und dies ist jetzt fast ein Jahr, aber für diejenigen, die diese Frage suchen und lesen, möchte ich vorschlagen, dass Sie eine Datei schließen, wenn Sie damit fertig sind, oder zumindest eine Untersuchung wie meine Antwort machen zeigt.
Ich bin kein Programmierer, aber ich bin in letzter Zeit auf diese Situation gestoßen.
Ich habe ein WinForms c # -Programm erstellt und File.ReadAllText
verwendet, um Text in eine Zeichenfolge zu kopieren. Danach habe ich versucht, die Datei direkt aus dem Ordner zu löschen, nicht durch das Programm, aber ich habe einen Fehler bekommen, dass die Datei in einem anderen Programm noch geöffnet war. Ich habe dann aufgehört, das Programm auszuführen und konnte die Datei löschen.
Das ist meine Erfahrung in Visual Studio 2012 Ultimate. Es könnte etwas anderes machen, aber das hat es für mich getan.
Wenn ich StreamReader.ReadToEnd
und dann StreamReader.Close
für die gleiche Datei verwendet habe, hatte ich kein Problem, die Datei während der Ausführung des Programms zu löschen.
Sie müssen nur IDisposable Instanzen schließen, normalerweise mit mit , z. B .:
%Vor%, da Sie keine IDisposable-Instanz in Ihrem Code haben (File.ReadAllText gibt String zurück, der nicht IDisposable ist) Sie haben nichts zum Schließen / Dispose