分析器类的列表,用于分析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());
}
现在我正在 in 的最终环境中工作。
答案 0 :(得分:1)
问题2.
我将提供我自己的子类,它可以直接访问ByteArrayInputStream和ByteArrayOutputStream的缓冲区。这样你就不会在toByteArray
中制作额外的副本,从而减少记忆和时间。
问题3 将其分配给本地非最终变量
InputStream nonFinalIn = in;
for(DocumentAnalyser analyser : a) {
o.getDependencies().addAll(analyser.analyse(nonFinalIn, out));
nonFinalIn = new ByteArrayInputStream(out.toByteArray());
}
请注意,原始的in
将不再有效(它将位于流末尾)
答案 1 :(得分:1)
java.io.PipedInputStream
/ java.io.PipedOutputStream
对。请注意,通过应用1.您不需要担心2,因为您实际上正在管理流。