InputStreamReader.read никогда не завершает чтение и никогда не возвращается.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 InputStreamReader.read никогда не завершает чтение и никогда не возвращается.

Сообщение Anonymous »

У меня есть InputStream, и следующий код работает, считывая несколько байтов из входного потока и создавая из них строку:

Код: Выделить всё

byte[] buffer = new byte[1024];
int i = in.read(buffer, 0, 1024); //"in" is the input stream
String line = new String(buffer, 0, i);
System.out.println(line);
но следующее не работает, оборачивая входной поток в InputStreamReader и пытаясь прочитать из него, никогда не возвращается и зависает в ожидании:

Код: Выделить всё

InputStreamReader reader = new InputStreamReader(in, StandardCharsets.UTF_8);
reader.read(); //this call never returns...
Во время отладки я вижу, что базовый метод read() входного потока вызывается несколько раз и возвращает байты, как и ожидалось, но средство чтения не возвращает результат.< /p>
Оба приведенных выше блока кода находятся внутри задачи исполнителя, возможно, это связано:

Код: Выделить всё

ExecutorService executor = Executors.newCachedThreadPool();
executor.submit(
() -> {
//Read from streams..
});
У меня та же проблема с BufferedReader, для него метод readLine никогда не возвращает результат.
Почему может работать чтение необработанного входного потока а с помощью читателей нет?

Подробнее здесь: https://stackoverflow.com/questions/792 ... er-returns
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»