你如何两次读取相同的输入流?是否有可能以某种方式复制它?
我需要从网络获取图像,将其保存在本地,然后返回保存的图像。我只是认为使用相同的流而不是为下载的内容启动一个新的流然后再次阅读它会更快。

最佳答案

您可以使用 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 - 读取输入流两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9501237/

10-13 04:18