Почему BufferedReader :: readLine висит на EOF? - PullRequest
0 голосов
/ 08 октября 2019

У меня есть некоторый код Java 8, который пытается прочитать содержимое файла (включая переводы строк) в одну строку;Вот смелость:

static private void fn( BufferedReader reader ) throws IOException {
    StringBuilder builder = new StringBuilder( 1000000 );
    String line = null;
    while ( ( line = reader.readLine() ) != null ) {
        builder.append( line ).append( '\n' );
        System.err.println( line );
    }
    String text = builder.toString();
    ...
}

public static void main(String[] args) throws IOException {
    BufferedReader reader = new BufferedReader( new InputStreamReader( System.in ) );
    fn( reader );
}

Я запускаю это в конфигурации запуска в Eclipse, которая перенаправляет System.in из файла (который заканчивается EOF), и операторы печати подтверждают, что строкидействительно, читаются, но как только чтение проходит мимо последней строки, оно зависает в отладчике Eclipse.

У меня не было этой проблемы с чтением из других файлов таким способом;почему сейчас?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...