Считывает текст. Линия считается завершенной любым из строк ('\n'), возвратом каретки ('\ r') или возвратом каретки, за которым следует сразу строка-строка.------ javadoc 1.8
Затем у меня есть текстовый файл:
the first line
the second line
примечание: последний символ строки seond - 'e', то есть не существует возврата каретки.
то вот мой демо-код.
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();
}
реальный вывод:
the first line
the second line
то мой вопрос в том, почему метод readLine может получить вторую строку для него, не имеет разделителя строк (\n или \r или\n\r).
Я знаю, что существует конец файла (EOF), но, похоже, javadoc не сообщает, что EOF явно является разделителем строк.
Если я использую Scanner вместо BufferedReader, код ниже:
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();
}
тогда выход будет:
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)