Почему InputStreamReader блокирует read () вместо возврата -1? - PullRequest
4 голосов
/ 21 января 2012

Я использую функцию java InputStreamReader read ().Когда я достигну конца входного потока, я должен ввести в мою переменную int значение -1, но вместо этого он блокируется.Почему я не получаю -1 в конце входного потока?(Я отладил его по буквам, убедившись, что это действительно конец ввода и что сокет подключения активен).

Хорошее решение - использовать функцию ready (), выполнив:

if (isr.ready())
    currCharVal = isr.read();

Заранее спасибо, Гай.

1 Ответ

4 голосов
/ 21 января 2012

Это может произойти, если другой конец не закрывает соединение. Когда сокет закрыт, read () вернет -1.

Использование готового и доступного довольно непредсказуемо в моем опыте. Я бы просто читал (byte []) до тех пор, пока не будет достигнут конец, и ожидал, что другой конец закроется по окончании.

...