我已经通过Apache commons-compress库实现了 bz2解压缩程序,以便在文件系统上的目录结构中的某个点下方使用camel解压缩bz2文件。我已经选择了文件名来解压缩CamelFileName标头中的 ,用我的解压缩程序打开文件并将解压缩后的文件放回到同一目录中。它工作正常。调用我在这里复制的解压缩器的process()方法缩短了;通过驼峰路径调用所有必需文件的处理器:
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);
}
我认为如果我从邮件正文中获取文件会更好。你会如何以这种方式实现它?
答案 0 :(得分:1)
Body将是InputStream类型。您可以直接使用此Java类型。 Camel按需读取文件。即当您尝试在路径或bean中访问它时:
String text = exchange.getIn().getBody(String.class); //or
byte[] bytes = exchange.getIn().getBody(byte[].class); //or
InputStream is = exchange.getIn().getBody(InputStream.class);
根据需要使用上述之一。关闭它,不要担心Camel会照顾它。