2012-03-01 133 views
7

即时通讯试验让骆驼做一些文件操作并将它们传递给activeMQ代理,我将这个项目从最近退出的人那里带走了。如何:阿帕奇骆驼,正则表达式匹配文件

什么Ive得到了迄今:

<route id="SVLFTPCOPY"> 
    <from uri="sftp://*****:*******@********/srv/test/?fileName=*2280.xls&amp;noop=true&amp;idempotent=false"/> 
    <to uri="file:/srv/data/test/destination/"/> 
    <to uri="activemq:queue:svl.ftp.copy"/> 
    </route> 

它的工作原理到它运行的路线没有抛出任何错误了点,但还是犯规将文件复制到本地文件。

任何想法? 。

回答

18

是的,你需要的,如果你想筛选出基于模式的文件使用包含/排除/过滤选项。 fileName选项适用于单个文件。

因此,在您的情况下,删除fileName选项并将其替换为include=.*2280.xsl。请注意,包含基于Java正则表达式,所以我们使用点星号来指示通配符。更多细节在这里:http://camel.apache.org/file2。 ftp组件继承了文件组件99%的选项,所以这就是我引用文件wiki页面的原因。

+1

用一个简单的java正则表达式'include'和'exclude'来更新Camel WIKI页面会很好。 – 2013-01-11 16:55:04

+0

很好。这个答案节省了我的时间:include中的正则表达式应该在星形之前有点,所以它看起来像:&include =。* 2280.xsl。否则它将无法工作 – kachanov 2014-05-06 04:46:35

3

使用使用Java正则表达式的include选项:

include=.*2280\\.xsl 

请介意\\点之前.

另外,使用antInclude

antInclude=*2280.xsl 
0

在执行名称匹配,使用以下代码:

if (ObjectHelper.isNotEmpty(endpoint.getInclude())) { 
    if (!name.matches(endpoint.getInclude())) { 
     return false; 
    } 
} 

所以你可以测试你应该使用哪个正则表达式。在你的情况下,我认为.*2280\\.xsl是你应该使用的。