1

我的 ftp 上有几个文件夹:

/csv
/xml
/processed
/....

将每个文件从 file.csv 处理到 file.done 并将其移动到已处理文件夹后,如何重命名和移动它?我已经尝试了很多选项,比如向“from”添加大量参数,或者在 onCompletion 中添加一些东西,或者添加更多的路由来移动文件。所有占位符都包含正确的值并由 Spring 处理。

<route>
            <from uri="ftp://{{ftp.user}}@{{ftp.server}}/{{inbound.csv}}?password={{ftp.pass}}&amp;binary=true&amp;include=.*csv"/>
            <onCompletion onCompleteOnly="true">
                <to uri="ftp://{{ftp.user}}@{{ftp.server}}/{{outbound.csv}}?password={{ftp.pass}}&amp;doneFileName=${file:name}.done"/>
            </onCompletion>
            <delay>
                <constant>15000</constant>
            </delay>
            <unmarshal><csv/></unmarshal>
            <to uri="bean:cSVHandler?method=process"/>
        </route>

请帮忙。

4

2 回答 2

4

使用 move 选项将在处理后移动/重命名文件,

<from uri="ftp://{{ftp.user}}@{{ftp.server}}/{{inbound.csv}}
      ?password={{ftp.pass}}&amp;binary=true&amp;include=.*csv
      &amp;move=../processed"/>

这会将文件移动到 ../processed 目录中。

在http://camel.apache.org/file2查看有关移动选项的更多详细信息

于 2013-11-11T12:03:12.450 回答
3

如果有人发现这篇文章并且只想重命名文件,您可以添加

&move=${headers.CamelFileName}.old
于 2020-05-22T13:52:28.743 回答