我需要合并两个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
感谢您回复此
答案 0 :(得分:1)
假设这是Java,只需将一个流写入另一个流的末尾。
hdrclob.write(conclob.toByteArray());
// hdrclob.toByteArray() now returns the concatenation of the two streams
如果您只想将它们作为单个InputStream
顺序读取,则可以构造一个SequenceInputStream
,将任意两个输入流连接在一起。
InputStream everything = new SequenceInputStream(
new ByteArrayInputStream(hdrclob.toByteArray()),
new ByteArrayInputStream(conclob.toByteArray()));
// now read everything