java inputstream(添加页眉和页脚)

时间:2013-08-09 16:15:57

标签: java inputstream

我想编写一段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 +页脚的标题+内容组合在一起并不是一个好的解决方案......

3 个答案:

答案 0 :(得分:3)

SequenceInputStream如何将标题,正文和页脚组合在一起。

见这里:how-to-chain-multiple-different-inputstreams-into-one-inputstream

答案 1 :(得分:2)

解决方案草图,问题要求: 创建自己的类EnrichedInputStream,继承自InputStream。

  1. 在构造函数调用中记住页眉,页脚和原始流,其中包含这三个参数。
  2. 让一个或多个实例变量显示状态(标题中的位置,原始流中的位置,页脚。
  3. Owerwrite read函数首先传递标题,在结束之后,传递原始流的contentz,在它结束传递页脚之后。这将使用上面提到的实例变量。

答案 2 :(得分:1)

您无法通过方法调用描述的方式执行此操作。您必须编写标题,然后是数据,然后是页脚。

您需要通过扩展FilterInputStream或输出FilterOutputStream来创建过滤流。

然后,您可以覆盖read(等方法,以便首先读取标题。

对于输出,这有点容易。只需在打开流时写入标题并覆盖close(以在关闭前写入页脚。