2016-04-15 83 views
1

我已經通過Apache commons-compress庫實現了bz2解壓縮程序,以在文件系統上的目錄結構中某個點以下使用camel解壓縮bz2文件。我已經拿起文件名來從CamelFileName頭文件解壓縮,用我的解壓縮器打開文件並將解壓縮的文件放回到同一目錄中。它工作正常。調用我在此複製的解壓縮器的process()方法縮短;該處理器被調用由駱駝航線所有必要的文件:CamelFileName與郵件正文,文件操作

public void process(Exchange exchange) throws Exception { 
    LOG.info(" #### BZ2Processor ####"); 
    BZ2 bz2 = new BZ2(); 
    String CamelFileName = exchange.getIn().getHeader("CamelFileName", String.class); 
    bz2.uncompress(CamelFileName); 
} 

我認爲,這將是更好,如果我從郵件正文取文件。你會如何以這種方式實現它?

回答

1

正文將是InputStream類型。您可以直接使用此Java類型。駱駝按需讀取文件。即當您嘗試在路線或豆中訪問它時:

String text = exchange.getIn().getBody(String.class);  //or 
byte[] bytes = exchange.getIn().getBody(byte[].class);  //or 
InputStream is = exchange.getIn().getBody(InputStream.class); 

如果您認爲合適,請使用上述之一。至於關閉它,別擔心駱駝會照顧它。

+0

謝謝。我必須關閉流或打開它,駱駝會照顧它嗎?最好的是,如果你可以發佈示例代碼。 – Tamas

+0

請參閱我的編輯。 –

+0

非常感謝這篇文章!我將使用流,因爲我有大文件。 – Tamas