Liest eine Textzeile. Eine Zeile gilt als beendet, wenn ein Zeilenvorschub ('\ n'), ein Wagenrücklauf ('\ r') oder ein Wagenrücklauf, unmittelbar gefolgt von einem Zeilenvorschub, beendet wird. --- javadoc 1.8Warum BufferedReader.readLine eine Zeile lesen kann, die kein Zeilentrennzeichen enthält
Dann habe ich eine Textdatei wie folgt aus:
the first line
the second line
Anmerkung: das letzte Zeichen der seond Linie ist ‚e‘, die dort existieren Rückkehr Wagen nicht zu sagen ist.
dann hier ist mein Demo-Code.
public void process() throws IOException{
BufferedReader br = new BufferedReader(new FileReader("demo.txt"));
String line;
while((line=br.readLine())!=null){
System.out.println(line);
}
br.close();
}
die reale Produktion:
the first line
the second line
dann Frage meine ist, warum die Methode Readline kann die zweite Zeile erhalten für sie Line-Trennzeichen (\ n oder \ r oder \ n \ doesnt haben r).
Ich weiß, gibt es eine Ende der Datei (EOF), aber es schien, dass die Javadoc nicht die EOF ist auch der Zeilentrenner explizit.
Wenn ich Scanner anstelle von BufferedReader den Code wie folgt:
public void testScan() throws IOException{
Scanner scan = new Scanner(new FileInputStream("demo.txt"));
String line;
while((line=scan.nextLine())!=null){
System.out.println(line);
}
scan.close();
}
dann wäre der Ausgang sein:
the first line
the second line
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at com.demo.Demo.testScan(Demo.java:39)
at com.demo.Demo.main(Demo.java:49)