2014-01-19 9 views
2

Есть ли способ спросить DataInputStream, есть ли у него контент для чтения? .readByte() будет просто повесить его, ожидая байты для чтения :(Или я всегда должен отправить фиктивные байты, чтобы убедиться, что он всегда видит что-тоПроверьте, есть ли у DataInputStream контент

ответ

4
dis.available(); 

Возвращает: ПОДТАЕТ числа байтов, которые могут быть считаны (или пропущено) от этого входного потока без блокирования.

Является ли это то, что вы ищете?

также проверить ответы здесь. вы можете получить еще больше информации. "available" of DataInputStream from Socket

+0

затем попытаться прочитать, а затем непрочитанные данные из него. Если он действительно ничего не возвращает. Затем его пустые и доступные(); работает, как это shoud –

+1

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

+0

Теперь используйте PushBackInputStream и dis, pbs для доступных, для отдыха;) – Pwnie2012

1

Посмотрите на

public int available() throws IOException 

согласно документации это «Возвращает оценку числа байтов, которые можно читать»

поэтому вы должны вызывать dis.available()

Смежные вопросы