2016-04-15 77 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