【发布时间】:2012-08-12 21:19:58
【问题描述】:
我正在实现的 API 处理包含分层结构化数据的 InputStream,即嵌套块,包括叶块中的许多图像。 (如果你必须知道,我正在解析的是 CBEFF 数据。)每个数据块都以一个包含关于该块的一些元数据的标题作为前缀。
1st level 1 header
1st level 2 header
1st level 2 data block
2nd level 2 header
2nd level 2 data block
2nd level 1 header
3rd level 2 header
3rd level 2 data block
原始的 InputStream 是我的 API 类的构造函数的参数,并沿层次结构向下传递。 目前,我正在 API 类的构造函数中将图像读入字节数组,因此每个构造函数都会在读取该类负责的完整数据时阻塞,稍后当客户端调用该 API 类的相关 getter 方法时,他们将获得从内存提供的图像数据。我更愿意以某种惰性 InputStreams 的形式将包含的图像提供给我的 API 的客户端,这样图像字节只能从原始 InputStream 中读取,因为客户端读取了由吸气剂。例如,这使得进行渐进式渲染成为可能,这很有用,因为原始 InputStream 很慢。
有没有用 InputStreams 解决这个问题的优雅方法?
【问题讨论】:
-
呃,把你所有的读图代码都删掉了吗?
-
@EJP,是的,如果只有一个图像并且图像数据是 InputStream 中的最后一个元素,那么这将起作用。我有多个图像,图像 n_+1 的标题跟随图像 _n 的数据。我会澄清这个问题。
标签: java io inputstream