Ich habe ein einfaches Programm, um eine Datei mit dem StreamReader zu lesen und Zeile für Zeile zu verarbeiten. Aber die Datei, die ich gerade lese, kann sich manchmal in einem Netzwerkordner befinden. Ich bin beim Testen mit einer solchen Datei gestolpert. Wenn die Netzwerkverbindung irgendwann während des Lesens verloren geht, bleibt sie in der gleichen Zeile und wiederholt sich in einer Endlosschleife, indem dieselbe Zeile wie das Ergebnis ausgegeben wird aus dem Stream.ReadLine().StreamReader.ReadLine hängt in einer Endlosschleife
Gibt es eine Möglichkeit, die ich finde, wenn das FileHandle nicht aus dem Stream selbst verfügbar ist? Ich habe erwartet, dass eine FileNotAvailableException-Art einer Ausnahme ausgelöst wird, wenn das Dateihandle vom StreamReader verloren geht.
Hier ist mein Code-Schnipsel ...
string file = @"Z://1601120903.csv"; //Network file
string line;
StringBuilder stb = new StringBuilder();
StreamReader stream = new StreamReader(file, Encoding.UTF8, true, 1048576);
do
{
line = stream.ReadLine();
// Do some work here
} while (line != "");
StreamReader kann den Griff nicht "verlieren". Wenn es in der Tat nicht zwischengespeicherte Daten verwenden kann und das Netzwerk zum Abrufen von Dateiinhalten treffen muss, schlägt der zugrunde liegende ReadFile() - Aufruf fehl, und Sie erhalten eine System.IOException. Welche Berichte "Netzwerkfehler", einer der vielen Dinge, die beim Lesen von Dateien schief gehen können. Sie würden die Ausnahme abfangen und den Benutzer darüber informieren, damit er alles Notwendige tun kann, um das Problem zu beheben. –
Ich überlege, ob ich das hier schließen soll, weil hier ein Bug ist, der in diesem Code nicht sichtbar ist. Der hier gezeigte Code muss eine vereinfachte Version des echten Codes sein. – usr
@HansPassant, ja ich dachte auch gleich das Gleiche. Aber wenn Sie diese Codezeile ausführen, wird das Problem auftreten. Es gibt keine Ausnahme, da es mich immer wieder auf die selbe Linie wirft. – Asanka