InputStream不会重置为开始


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

//现在,我想稍后再引用InputStream,但我希望从流的开头而不是100字节开始。我尝试mark()在100处尝试,然后reset()在读取前100个字节后尝试了此操作,但这并没有要么工作。

有任何想法吗?可能是一个愚蠢的错误..只是没有看到它。


问题答案:

当您使用mark()的的的java.io.InputStream对象,你应该与检查markSupported()方法,如果你的InputStream实际上支持使用标记。根据API,InputStream该类不是,但是java.io.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();