当前位置: 首页 > 面试题库 >

Java 两次读取流

秦学林
2023-03-14
问题内容

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

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


问题答案:

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


 类似资料:
  • 我是Spring Batch的新手。我的要求是我有一个阅读器,它通过Web服务调用/数据库调用获取记录,目前我正在将这些记录写入一个表。现在我需要处理相同的记录(阅读器读取的记录)并写入另一个表。这里要注意的一点是,第二次写入中存储的第二个项目是不同类型的第一次写入。 我需要像下面这样 对于上述相同的工作,我需要事务管理。此外,在步骤2中:-如果可能,我应该使用步骤1中已经读取的数据。

  • 问题内容: type ValidationModel struct { Name string Email string Password string } 首先,我使用govalidator验证请求正文。 在验证了请求之后,我再次将请求主体解码为用户结构,但已使用validationModel读取了请求主体一次,因此当我尝试再次将其解码为用户时,它没有提供任何值。 我在这里可以想到两种解决方案:

  • 我有两个不同的方法,在两个不同的类中。我希望他们都能阅读同一行输入,并检查不同的内容。一个查找“给我冲杯咖啡”之类的说明,另一个查找不同的关键字,如“请”和“谢谢”(这些影响程序对我的反应): 然后我在我的主字符串中调用它们,只是为了测试它们: 我的控制台显示如下: 我知道发生了什么,但我想不出其他办法。我也尝试过使用同一个扫描仪,不同的字符串,但仍然不起作用。我怎样才能使这两种方法都能读取我的第

  • 问题内容: 我正在编写一个解析文本文件的python脚本。此文本文件的格式是这样的,文件中的每个元素都使用两行,为了方便起见,我想在解析之前先读取这两行。可以用Python完成吗? 我想要一些类似的东西: 但这打破了这样的说法: ValueError:混合迭代和读取方法将丢失数据 问题答案: 这里有类似的问题。您不能混合使用迭代和readline,因此您需要使用其中之一。

  • 早上好在我的时区。 事先表示感谢并致以最良好的问候

  • 我正在尝试实现一个Jackson反序列化器,以便在JSON发生变化时能够迁移JSON(例如,在重命名的字段中,我需要将现在不一致的JSON读入一致的JSON)。 一种方法是创建JsonDeserializer,将JSON作为适当的最终类读取,然后将其作为映射再次读取,以挑选更改。 但我似乎无法做到这一点,因为每次我读取或反序列化JSON时,支持流都会关闭。 我避免创建新的ObjectMapper,