Как определить, когда был достигнут конец файла?

Я пытаюсь прочитать текст из текстового файла. Мне нужна помощь в определении того, когда наступил конец файла. Как это определить в Java?

FileInputStream istream = new FileInputStream("\""+filename+"\"");      
Scanner input = new Scanner(istream);
while(EOF != true)
{
 ....
}

Спасибо!


person Blackbinary    schedule 17.11.2010    source источник


Ответы (2)


Вы можете проверить с помощью hasNextLine():

Scanner input = new Scanner(new File("\""+filename+"\""));
while(input.hasNextLine())
{
   String data = input.nextLine();
}
person jjnguy    schedule 17.11.2010
comment
Scanner.hasNextLLine() выйдет из строя и сгорит, если вы не читаете всю строку за раз (.nextLine()). В противном случае, согласно Томасу Лэнгстону, используйте вместо этого .hasNext(). - person paulsm4; 28.11.2016

Поиск на основе строк может быть тем, что вы хотите, но также может быть полезен поиск на основе токенов. Вы можете увидеть в документации по Scanner

public boolean hasNext()

Возвращает true, если этот Scanner имеет другой токен на входе. Этот метод может блокироваться во время ожидания ввода для сканирования. Scanner не проходит мимо любого ввода.

Указывается: hasNext в интерфейсе Iterator<String>

Возвращает: true тогда и только тогда, когда у этого Scanner есть другой токен

Выдает: IllegalStateException - если этот Scanner закрыт

См. Также: Iterator

person Thomas Langston    schedule 17.11.2010