CamelFileName与邮件正文,文件操作

时间:2016-04-15 16:04:35

标签: apache-camel

我已经通过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);   
}

我认为如果我从邮件正文中获取文件会更好。你会如何以这种方式实现它?

1 个答案:

答案 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会照顾它。