BufferedReader не возвращается - PullRequest
0 голосов
/ 03 июля 2018

Я использую Java для запуска программы и чтения текста программы в буферизованном считывателе. Затем я хочу распечатать результаты, выполнив это:

    while((line=input.readLine()) != null){
        System.out.println(line);
    }

По какой-то причине при этом метод readLine () вообще не возвращает примерно половину текста, и программа ждет бесконечно. Тем не менее, при запуске этой программы непосредственно из командной строки ее вывод будет точно таким, как ожидалось, всего около 100 строк простого текста. Что может привести к тому, что readLine () не вернется на полпути при чтении простого текста?

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Что может привести к тому, что readLine () не вернется на полпути при чтении простого текста?

Если вы читаете из файла в файловой системе, возможно, это связано с проблемой файловой системы; например удаленный файловый сервер не отвечает.

Если вы читаете из сокета, либо удаленный сервер (еще) не записал / сбросил данные, которые вы пытаетесь прочитать, либо проблема с сетью не позволяет данным пройти.

Если вы читаете из канала (например, с выхода другой программы), то другая программа не записала / не очистила данные, которые вы пытаетесь прочитать.

(В других случаях выполняется чтение из «файла устройства» или файла в файловой системе «/ proc», или в файловой системе с обратной связью. В этих случаях трудно перечислить возможные причины.)

0 голосов
/ 03 июля 2018

Вам необходимо закодировать текстовый документ в UTF-8 , например, затем использовать Сканер .

// specify file path
String filePath = "C:/path/path/file-location/file.txt";
// make a scanner with the UTF-8 param
Scanner scanner = new Scanner(new File(filePath),"UTF-8");
// loop through text 
while (scanner.hasNextLine()){
   System.out.println(scanner.nextLine());
}

На самом деле существует несколько способов кодирования текста, подобных этому, но важность заключается в самой кодировке текста. Если у вас есть документ в правильном формате, объекты и классы, выбранные вами для чтения ввода, предоставляются на ваше усмотрение.

...