2012-03-01 132 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是你應該使用的。