0

我需要合并两个 ByteArrayOutputStream 并传递给 xdo api TemplateHelper.processTemplate 以生成报告

编写以下代码以在两个 ByteArrayOutputStreams 中获取 xml 输出 -

ByteArrayOutputStream hdrclob = new ByteArrayOutputStream (1024);

hdrclob = (ByteArrayOutputStream)this.getDataTemplateXML(transaction,"ASO",
                      "ASOPD",parameters1,null);

ByteArrayOutputStream conclob = new ByteArrayOutputStream (1024);

ContractTermsXMLGenerator.writeXML(PrintQuote,(OutputStream) conclob, true,
            documentType, new Number(params[8]), new Number("0"));

现在将 hdrclob / conclob 分别传递给 xdo api,然后能够在这样的单独报告中看到各自的 xml 输出 -

TemplateHelper.processTemplate(((OADBTransactionImpl)transaction).getAppsContext(),
        "ASO", "SampleRTF", language, country,
         new ByteArrayInputStream(hdrclob.toByteArray()),
           TemplateHelper.OUTPUT_TYPE_PDF, new Properties(), pdf);    

或者

TemplateHelper.processTemplate(((OADBTransactionImpl)transaction).getAppsContext(),
         "ASO", "SampleRTF", language, country, 
         new ByteArrayInputStream(conclob.toByteArray()),
           TemplateHelper.OUTPUT_TYPE_PDF, new Properties(), pdf);  

但是需要合并 hdrclob 和 conclob 以生成单个 ByteArrayOutputStream 并传递给 xdo api 以获得包含两个 xml 输出的单个报告

请告诉如何合并两个 ByteArrayOutputStreams

感谢您对此的回复

4

1 回答 1

1

假设这是 Java,只需将一个流写入另一个流的末尾。

hdrclob.write(conclob.toByteArray());
// hdrclob.toByteArray() now returns the concatenation of the two streams

如果您只想将它​​们作为单个 顺序读取InputStream,您可以构建将SequenceInputStream任意两个输入流连接在一起的 a 。

InputStream everything = new SequenceInputStream(
    new ByteArrayInputStream(hdrclob.toByteArray()),
    new ByteArrayInputStream(conclob.toByteArray()));
// now read everything
于 2013-07-10T06:50:24.640 回答