我正在实现的一个API处理包含分层结构化数据的InputStreams,即嵌套块(包括叶块中的多个图像)。 (如果您必须知道,我解析的数据是CBEFF。)每个数据块都以包含有关该块的一些元数据的标题为前缀。通过提供InputStream getter来延迟访问InputStream
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方法时,它们将获取从内存中提供的图像数据。我更愿意以某种惰性InputStream的形式向我的API的客户端提供所包含的图像,以便图像字节仅从原始InputStream中读取,因为客户端读取由吸气。这使得例如可以进行渐进式渲染,这在原始InputStream较慢时很有用。
有没有一种优雅的方式来解决这与InputStreams?
错误,只是删除所有的图像阅读代码? – EJP 2012-08-13 01:02:42
@EJP,是的,如果只有一个图像,并且图像数据是InputStream中的最后一个元素,它就可以工作。我有多个图像,图像_n_ + 1的标题跟在图像_n_的数据之后。我会澄清这个问题。 – martijno 2012-08-13 07:07:47