Думаю, вы ищете inputstream.available ()
. Он не сообщает вам, пуст ли он, но может указать, есть ли данные для чтения или нет.
Нет, нельзя. InputStream
предназначен для работы с удаленными ресурсами, поэтому вы не можете узнать, есть ли он там, пока не прочтете из него.
Вы можете использовать java.io.PushbackInputStream
, однако, что позволяет вам читать из потока, чтобы увидеть, есть ли там что-то, а затем «протолкнуть его обратно» вверх по потоку (на самом деле это не так, но так оно работает с клиентским кодом).
Вы можете использовать метод available ()
, чтобы спросить поток, есть ли в нем какие-либо данные в момент его вызова . Однако не гарантируется, что эта функция будет работать со всеми типами входных потоков. Это означает, что вы не можете использовать available ()
, чтобы определить, будет ли вызов read ()
фактически блокироваться или нет.
Я начал работать с вращениями MKMapView и обнаружил, что:
Как насчет использования inputStreamReader.ready () , чтобы узнать это?
import java.io.InputStreamReader;
/// ...
InputStreamReader reader = new InputStreamReader(inputStream);
if (reader.ready()) {
// do something
}
// ...