你如何两次读取同一输入流?是否可以某种方式复制它?
我需要从网络获取图像,将其保存在本地,然后返回保存的图像。我只是想,使用相同的流而不是为下载的内容启动新的流然后再次读取它会更快。
你可以org.apache.commons.io.IOUtils.copy用来将InputStream的内容复制到字节数组,然后使用ByteArrayInputStream从字节数组重复读取。例如:
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); }