分析器类的列表,这些分析器类分析InputStream的依赖项,更改一些内容并将其写入OutputStream:

public Set<Dependency> analyse(InputStream i, OutputStream o);


分析器应按以下方式链接:

for(DocumentAnalyser analyser : a) {
 o.getDependencies().addAll(analyser.analyse(in, out));
 in = new ByteArrayInputStream(out.toByteArray());
}


现在,我在最终环境中工作。


有没有更好的方法来“链接”流?
使用ByteArrayInputStream从“输出”到“输入”的“交换”操作昂贵吗?
如何处理“ in”是最终的问题?

最佳答案

使用辅助线程和java.io.PipedInputStream / java.io.PipedOutputStream对。
它可能无法在大流量中表现良好。
就像在另一个响应中所说的那样,使用局部非最终变量进行链接


请注意,通过应用1.,您不必担心2,因为实际上是在对流进行管道传输。

09-09 23:22