java – 读取流两次

如何读取相同的输入流两次?有可能复制吗?

我需要从Web获取图像,保存在本地,然后返回保存的图像。我只是想,它会更快地使用相同的流,而不是开始一个新的流到下载的内容,然后再次读取。

您可以使用org.apache.commons.io.IOUtils.copy将InputStream的内容复制到字节数组,然后使用ByteArrayInputStream从字节数组中重复读取。例如。:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
org.apache.commons.io.IOUtils.copy(in, baos);
byte[] bytes = baos.toByteArray();

// either
while (needToReadAgain) {
    ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
    read(bais);
}

// or
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
while (needToReadAgain) {
    bais.reset();
    read(bais);
}
http://stackoverflow.com/questions/9501237/read-stream-twice

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 读取流两次