2012-03-01 8 views
7

मैं कुछ फाइल ऑपरेशंस करने के लिए ऊंट प्राप्त करने और सक्रिय एमक्यू ब्रोकर के माध्यम से उन्हें पास करने में प्रयोग कर रहा हूं, इस परियोजना को हाल ही में छोड़ने वाले व्यक्ति से लिया गया है।कैसे: अपाचे कैमल, रेगेक्स मैच फाइलें

क्या 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

हाँ आप/शामिल करने, बहिष्कृत/फिल्टर विकल्प का उपयोग करने के लिए यदि आप पैटर्न पर आधारित फ़ाइलों को फ़िल्टर करना चाहते हैं की जरूरत सलाह देते हैं। फ़ाइल नाम विकल्प एकल फ़ाइल के लिए है।

तो अपने मामले में, फ़ाइल नाम विकल्प हटाएं और इसे include=.*2280.xsl से प्रतिस्थापित करें। ध्यान दें कि जावा नियमित अभिव्यक्तियों पर आधारित है, इसलिए हम वाइल्डकार्ड को इंगित करने के लिए डॉट स्टार का उपयोग करते हैं। यहां अधिक जानकारी: http://camel.apache.org/file2। FTP घटक फ़ाइल घटक के 99% विकल्पों को विरासत में लेता है, इसलिए मैं फ़ाइल विकी पेज का संदर्भ देता हूं।

+1

सरल जावा रेगेक्स 'शामिल' और 'बहिष्कृत' उदाहरणों के साथ ऊंट विकी पेज को अपडेट करना बहुत अच्छा होगा। –

+0

यह बढ़िया है। इस उत्तर ने मेरा समय बचाया: इसमें रेगेक्स अभिव्यक्ति में स्टार से पहले डॉट होना चाहिए, ऐसा लगता है: & include =। * 2280.xsl। अन्यथा यह काम नहीं करेगा – kachanov

1

छानने उस तरह के लिए मैं उपयोग करने के लिए GenericFileFilter

3

जावा नियमित अभिव्यक्ति का उपयोग करता है include विकल्प का उपयोग करें: .

वैकल्पिक डॉट से पहले

include=.*2280\\.xsl 

कृपया, मन \\, antInclude का उपयोग करें:

antInclude=*2280.xsl 
0

के कार्यान्वयन में नाम मिलान, निम्नलिखित कोड का उपयोग किया जाता है:

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

तो आप जांच सकते हैं कि आपको कौन सी नियमित अभिव्यक्ति का उपयोग करना चाहिए। आपके मामले में, मुझे लगता है कि .*2280\\.xsl है जो आपको उपयोग करना चाहिए।