我通过库实现了一个bz2解压缩器,它使用camel在文件系统目录结构中的某个点以下解压缩bz2文件。我获得了文件名,从CamelFileName header中解压缩,用解压缩器打开该文件,并将解压缩文件放回同一个目录。效果很好。调用这里复制的解压缩程序的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);
}
我认为如果我从消息体获取文件会更好。你是怎么做到的呢?
发布于 2016-04-15 20:17:02
身体为InputStream型。您可以直接使用此Java类型。骆驼按需读取文件。也就是说,当您试图在路由或bean中访问它时:
String text = exchange.getIn().getBody(String.class); //or
byte[] bytes = exchange.getIn().getBody(byte[].class); //or
InputStream is = exchange.getIn().getBody(InputStream.class);
在你认为合适的时候使用上面的一种。至于关闭它,不要担心,骆驼会照顾它。
https://stackoverflow.com/questions/36651932
复制相似问题