gpt4 book ai didi

java - 当我需要使用 2 次时,如何重新打开已关闭的 InputStream

转载 作者:IT老高 更新时间:2023-10-28 23:31:10 25 4
gpt4 key购买 nike

我目前正在使用 InpuStream 从我的服务器获取 JSON 响应。

我需要做两件事:

  1. 解析它并在屏幕上显示值
  2. 将此提要保存在 SDCard 文件中

当我一一使用这两种方法时,这完全没有问题。

使用 GSON 进行解析:

Gson gson = new Gson();
Reader reader = new InputStreamReader (myInputStream);
Result result = gson.FrmJson(reader, Result.class)

复制到 SDCard 是用

FileOutputStream f (...) f.write (buffer)

它们都已经过测试。

问题是一旦解析完成,我想写入 SDCard 并且它会中断。我知道我的 InputStream 已关闭,这就是问题所在。

这里有一些接近我的问题:How to Cache InputStream for Multiple Use

有没有办法改进该解决方案并提供我们可以使用的东西?

最佳答案

我可能会使用 ByteArrayOutputStream 将输入流排放到 byte[] 中,然后每次根据结果创建一个新的 ByteArrayInputStream我需要重新阅读流。

类似这样的:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int n = 0;
while ((n = myInputStream.read(buf)) >= 0)
baos.write(buf, 0, n);
byte[] content = baos.toByteArray();

InputStream is1 = new ByteArrayInputStream(content);
... use is1 ...

InputStream is2 = new ByteArrayInputStream(content);
... use is2 ...

相关且可能有用的问题和答案:

关于java - 当我需要使用 2 次时,如何重新打开已关闭的 InputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7805266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com