2013-07-10 98 views
0

我需要合併兩個ByteArrayOutputStream,並傳遞給XDO API TemplateHelper.processTemplate生成的報告需要合併兩個ByteArrayOutputStream來生成一個ByteArrayOutputStream

下面的代碼寫入到獲得XML輸出有兩種ByteArrayOutputStreams -

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

感謝在此回覆

+1

你在用什麼語言工作? –

+0

聽起來像Java。合併意味着什麼?追加很容易,只是不創建你的第二個包,傳遞第一個(hdrclob)作爲參數... – bluevoid

回答

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 
+0

感謝您的回覆,第一個例子我能夠結合兩個流 – user2567280

相關問題