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();