InputStream не будет сброшен в начало

InputStream data = realResponse.getEntity().getContent();
byte[] preview = new byte[100];
data.read(preview, 0, 100);

// Теперь я хочу обратиться к InputStream позже, но я хочу его с начала потока, а не 100 байтов. Я пытался!--1--> это на 100, а потом reset() после того как я прочитал первые 100 байт, но это не сработало.

какие идеи? Наверное, глупая ошибка..просто не вижу.

2 ответов


при использовании mark() из java.Ио.InputStream объект, который вы должны проверить с markSupported() метод, если ваш InputStream фактически поддерживает использование метки. Согласно API InputStream класса нет, но Ява.Ио.BufferedInputStream делает. Возможно, вам следует встроить свой поток в BufferedInputStream объект:

InputStream data = new BufferedInputStream(realResponse.getEntity().getContent());
// data.markSupported() should return "true" now
data.mark(some_size);
// work with "data" now
...
data.reset();

если InputStream Марк поддержек (вы можете проверить с markSupported() метод), то должно работать следующее:

InputStream data = realResponse.getEntity().getContent();
byte[] preview = new byte[100];
data.mark(100);
data.read(preview, 0, 100);
data.reset();

Однако имейте в виду, что data.read(preview, 0, 100) is не гарантированно прочитать 100 байт за один раз, он может читать меньше.