Java 两次读取流

你如何两次读取同一输入流?是否可以某种方式复制它?

我需要从网络获取图像,将其保存在本地,然后返回保存的图像。我只是想,使用相同的流而不是为下载的内容启动新的流然后再次读取它会更快。

回答:

你可以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);

yourReadMethodHere(bais);

}

// or

ByteArrayInputStream bais = new ByteArrayInputStream(bytes);

while (needToReadAgain) {

bais.reset();

yourReadMethodHere(bais);

}

以上是 Java 两次读取流 的全部内容, 来源链接: utcz.com/qa/417419.html

回到顶部