Prüfen, ob die Datei gelesen werden kann

8

So versuche ich zu überprüfen, ob ich die Datei lesen kann, bevor ich sie tatsächlich lese

%Vor%

Ist das der richtige Weg?

Auch ist File.Open ähnlich wie File.ReadAllText , was ich meine ist, sind sie genauso teuer für die Leistung?

    
Pawan Nogariya 26.06.2013, 11:17
quelle

3 Antworten

4

Wenn Sie nach Ausnahmen suchen möchten, fügen Sie einfach den entsprechenden try..catch zum Dan Dinu-Code hinzu, z. B.

%Vor%     
Dmitry Bychenko 26.06.2013 11:40
quelle
3

Ob eine Datei gelesen werden kann, hängt von einer Reihe von Faktoren ab: Haben Sie Berechtigungen, ob die Festplatte kaputt ist. Ich wäre wahrscheinlich genauso gegangen wie du.

Sie müssen jedoch beachten, dass die Informationen, die Sie von dieser Methode erhalten, nur ein Schnappschuss sind. Wenn jemand sofort nach dem Aufruf dieser Methode die Berechtigungen für die Datei ändert, schlägt der spätere Zugriff auf die Datei im Code fehl. Sie sollten nicht auf das Ergebnis dieser Methode angewiesen sein.

Nur ein Vorschlag, der folgende Code macht das gleiche, ist aber ein bisschen prägnanter:

%Vor%

Da Sie den Stream nicht wirklich verwenden, müssen Sie keinen Verweis darauf halten. Stattdessen können Sie den Stream einfach sofort verwerfen, indem Sie dispose für das Ergebnis von File.Open() aufrufen.

BEARBEITEN:

Siehe Ссылка für eine Erklärung, warum ich Dispose() am Ende von File.Open() gesetzt habe. anstatt die using -Anweisung zu verwenden.

    
Pieter van Ginkel 26.06.2013 11:25
quelle
0

Ihre Lösung sieht gut aus. Sie können auch eine "using" -Anweisung verwenden:

%Vor%

Der Compiler übersetzt dies in einen try / finally-Block und entsorgt automatisch das Objekt, nachdem der Blockcode ausgeführt wurde.

Datei öffnen öffnet nur die Datei zum Lesen / Schreiben.

ReadAllText öffnet die Datei liest den Text und schließt ihn, damit es länger dauert. es ist Ihnen überlassen, die für Ihren Fall geeignete Methode zu wählen.

    
Dan Dinu 26.06.2013 11:25
quelle

Tags und Links