我想编写一段java,在输入流中添加页眉和页脚。
public static InputStream enrichInputStream(InputStream is,
String header,
String footer) {
...
}
想象一下,你有一个输入流,你会得到:“这里有一些数据”
然后如果我打电话
enrich(is,"my-header","my-footer")
我会得到
my-headerHERE IS SOME DATAmy-footer
这可行吗? 有人可以勾勒出一个解决方案吗?
P.S。 注意:输入流可能非常大,因此将原始InputSTream +页脚的标题+内容组合在一起并不是一个好的解决方案......
答案 0 :(得分:3)
SequenceInputStream如何将标题,正文和页脚组合在一起。
见这里:how-to-chain-multiple-different-inputstreams-into-one-inputstream
答案 1 :(得分:2)
解决方案草图,问题要求: 创建自己的类EnrichedInputStream,继承自InputStream。
答案 2 :(得分:1)
您无法通过方法调用描述的方式执行此操作。您必须编写标题,然后是数据,然后是页脚。
您需要通过扩展FilterInputStream
或输出FilterOutputStream
来创建过滤流。
然后,您可以覆盖read(
等方法,以便首先读取标题。
对于输出,这有点容易。只需在打开流时写入标题并覆盖close(
以在关闭前写入页脚。