Mein Code muss alle Dateien einlesen. Ich bin den folgenden Code zur Zeit mit:Wie kann man sehen, ob ein Reader auf EOF ist?
BufferedReader r = new BufferedReader(new FileReader(myFile));
while (r.ready()) {
String s = r.readLine();
// do something with s
}
r.close();
Wenn die Datei zur Zeit leer ist, aber dann ist s
null, was nicht gut ist. Gibt es eine Reader
, die eine atEOF()
Methode oder gleichwertig hat?
Die ready() -Methode sagt nur, ob die nächste Lese blockiert. Wenn der Reader an eof ist, wird der nächste Anruf nicht blockiert; Es wird sofort mit einer EOF-Angabe (Null für Readline, -1 für Read) zurückgegeben. –
Noch besser: Do-While statt While. –
Das JavaDoc von 'BufferedReader.readLine()' sagt, es gibt "Eine Zeichenfolge mit dem Inhalt der Zeile ... oder null ** zurück, wenn das Ende des Streams erreicht wurde" – Raedwald