如何从Camel FTP路由交换中获取实际文件对象

时间:2015-08-03 04:45:16

标签: apache-camel camel-ftp

在我的Camel路由器中:

from(<SourceURI>)
.process(new Processor() {
    @Override
    public void process(Exchange exchange) throws Exception {
        // I want to extract the file object from the exchange
    }
.to(<targetURI>).

我怎样才能做到这一点?

我试过,例如exchange.getIn().getHeader(Exchange.FILE_NAME, String.class),它给我文件名。 我正在搜索Exchange.FILE的东西,它给了我实际的文件对象。我的终极目标是在处理器中提取文件,因为路由交换是一个存档文件。

2 个答案:

答案 0 :(得分:7)

从正文中获取文件。 Camel使用'org.apache.camel.component.file.GenericFile'来存储文件正文。但是您可以使用Camel的类型转换器来获取所需类型的文件。

例如,您可以获取不同类型的内容,例如:

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

答案 1 :(得分:0)

对于拥有from("file:...")的人,以下作品:

File in = exchange.getIn().getBody(File.class);