用Java管道输入流

时间:2016-11-19 14:40:33

标签: java data-structures inputstream

Java InputStreams背后的主要思想是,一旦使用它,就无法重新读取该数据。一般来说,这种情况对大多数情况来说已经足够了。

然而,在某些情况下,我们可能希望以不同的方式多次处理某些数据。例如,假设我正在编写一个类似git的工具。因此,我想首先生成数据的哈希值,然后存储数据,并可能对相同的数据执行更多操作(例如,将数据复制到其他地方或其他任何地方)。

我喜欢考虑这个过程,如下图所示:

data --> hash() --> save() --> replicate() --> ...
          |           |            |
          ▼           ▼            ▼
        aa231e      /A/aa231e    http://example.org/A/aa231e

更新开始

显然,只要将前几个字节用于hash()函数,我们就可以将它们重用于save()函数,而hash函数则继续运行。因此并行化hash(),save(),replicate()等

更新结束

现在,我想知道:

  1. 是否可以使用Java实现这一目标?我有一些模糊的想法涉及实现自定义的InputStream并使用共享缓冲区,但我真的不确定这是否正确。
  2. 如果(1)的答案是肯定的,怎么样?如果不是,你建议我做什么?
  3. 是否有可用于实现此类管道的可用库/框架?
  4. 我还想了解任何可能的解决方案的优缺点和原因。

    PS。我不是在寻找一个打开 - 消耗 - 关闭的解决方案,并一次又一次地重新打开相同的流。

0 个答案:

没有答案