重用输入流
读取相同的输入流两次在各种情况下都很有用。一种这样的场景是加载远程图像,将其保存在本地,然后访问保存的图像。为了实现这一点,重用相同的输入流而不是创建新的输入流会更有效。
重用输入流的一种方法是将其内容复制到字节数组。这可以使用 org.apache.commons.io.IOUtils.copy 方法来完成。然后,生成的字节数组可用于创建多个 ByteArrayInputStream 对象,这些对象可以重复读取。
以下是如何执行此操作的示例:
<code class="java">ByteArrayOutputStream baos = new ByteArrayOutputStream(); org.apache.commons.io.IOUtils.copy(in, baos); byte[] bytes = baos.toByteArray(); // Option 1: Read the byte array multiple times while (needToReadAgain) { ByteArrayInputStream bais = new ByteArrayInputStream(bytes); yourReadMethodHere(bais); } // Option 2: Reset the input stream to read from it again ByteArrayInputStream bais = new ByteArrayInputStream(bytes); while (needToReadAgain) { bais.reset(); yourReadMethodHere(bais); }</code>
请注意,此方法可能会不适合大型或无限流,因为它涉及将流内容复制到内存。
以上是如何在 Java 中重用输入流进行多次读取?的详细内容。更多信息请关注PHP中文网其他相关文章!