Как я могу проверить, пуст ли InputStream, не читая из него?

5 ответов

Думаю, вы ищете inputstream.available () . Он не сообщает вам, пуст ли он, но может указать, есть ли данные для чтения или нет.

37
ответ дан 7 November 2019 в 08:34
поделиться

Нет, нельзя. InputStream предназначен для работы с удаленными ресурсами, поэтому вы не можете узнать, есть ли он там, пока не прочтете из него.

Вы можете использовать java.io.PushbackInputStream , однако, что позволяет вам читать из потока, чтобы увидеть, есть ли там что-то, а затем «протолкнуть его обратно» вверх по потоку (на самом деле это не так, но так оно работает с клиентским кодом).

58
ответ дан 7 November 2019 в 08:34
поделиться

Вы можете использовать метод available () , чтобы спросить поток, есть ли в нем какие-либо данные в момент его вызова . Однако не гарантируется, что эта функция будет работать со всеми типами входных потоков. Это означает, что вы не можете использовать available () , чтобы определить, будет ли вызов read () фактически блокироваться или нет.

4
ответ дан 7 November 2019 в 08:34
поделиться

Я начал работать с вращениями MKMapView и обнаружил, что:

  • Когда вы применяете CGAffineTransform к представлению карты, метод convertCoordinate: toPointToView: работает так же.
  • Аннотации вращаются вместе с представлением, включая текст аннотации.
  • Регион который подходит по-прежнему кажется подходящим для области на экране, это не
5
ответ дан 7 November 2019 в 08:34
поделиться

Как насчет использования inputStreamReader.ready () , чтобы узнать это?

import java.io.InputStreamReader;

/// ...

InputStreamReader reader = new InputStreamReader(inputStream);
if (reader.ready()) {
    // do something
}

// ...
1
ответ дан 7 November 2019 в 08:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: