2013-02-25 6 views
5

मुझे एक्सटेंशन द्वारा सबसे सरल फ़िल्टर की आवश्यकता है: f.e. सूचकांक 0कैमेल घटक में पैरामीटर शामिल करने के द्वारा एक्सटेंशन द्वारा फ़ाइलों को फ़िल्टर करने के लिए कैसे करें फ़ाइल 2

WARN - file://root_folder/working/) [FileConsumer] Consumer Consumer[file://root_folder/working/?delay=1000&delete=true&idempotent=false&include=*.xml&initialDelay=1000&readLock=changed] failed polling endpoint: Endpoint[file://root_folder/working/?delay=1000&delete=true&idempotent=false&include=*.xml&initialDelay=1000&readLock=changed]. Will try again at next poll. Caused by: [java.util.regex.PatternSyntaxException - Dangling meta character '*' near index 0 
*.xml 
^] 
java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0 
*.xml 
^ 
    at java.util.regex.Pattern.error(Pattern.java:1713) 
    at java.util.regex.Pattern.sequence(Pattern.java:1878) 
    at java.util.regex.Pattern.expr(Pattern.java:1752) 
    at java.util.regex.Pattern.compile(Pattern.java:1460) 
    at java.util.regex.Pattern.<init>(Pattern.java:1133) 
    at java.util.regex.Pattern.compile(Pattern.java:823) 
    at java.util.regex.Pattern.matches(Pattern.java:928) 
    at java.lang.String.matches(String.java:2090) 
    at org.apache.camel.component.file.GenericFileConsumer.isMatched(GenericFileConsumer.java:458) 
    at org.apache.camel.component.file.GenericFileConsumer.isValidFile(GenericFileConsumer.java:395) 
    at org.apache.camel.component.file.FileConsumer.pollDirectory(FileConsumer.java:94) 
    at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:107) 
    at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:142) 
    at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:92) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 
    at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) 
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 

ठीक हो सकता है मेरा बुरा पास

मेटा चरित्र झूलने '*': फ़ाइल 20120523.173227.CustomerMaster05092012.QWERTY.xml मार्ग:

<from uri="file://{{fdr.folder.working.url}}&amp;include=*.xml"/> 

काम नहीं करता। मैंने पूरी फ़ाइल को शामिल करने के लिए रखा:

<from uri="file://{{fdr.folder.working.url}}&amp;include=20120523.173227.CustomerMaster05092012.QWERTY.xml"/> 

संपूर्ण फ़ाइल ठीक है। आइए फ़ाइल नाम के बीच में

<from uri="file://{{fdr.folder.working.url}}&amp;include=20120523.*.xml"/> 

और फिर यह ठीक है। का फ़ाइल नाम में

<from uri="file://{{fdr.folder.working.url}}&amp;include=2*.xml"/> 

noup केवल एक ही अंकों रखते हैं, ऊंट ऐसी फ़ाइलों मैंने कोशिश नहीं मिला तारांकन भाग निकले, लेकिन यह मदद नहीं समझे।

<from uri="file://{{fdr.folder.working.url}}&amp;include=\*.xml"/> 
and 
<from uri="file://{{fdr.folder.working.url}}&amp;include=\\*.xml"/> 

फ़ाइल को अभी अनदेखा किया गया था। तो सवाल 1: तारांकन का उपयोग कैसे करें?

और प्रश्न 2: मल्टीमल फ़ाइल एक्सटेंशन का उपयोग कैसे करें, जैसे = .xml; ज़िप

thks

उत्तर

11

लानत, {хорошая мысля приходит опосля}, जानवर बल का उपयोग कर मैं बाहर सही मान के लिए मिला शामिल हैं:

.*.xml|.*.zip 
+5

हाँ इसकी सिर्फ एक नियमित अभिव्यक्ति है, तो आप जो कुछ भी जावा के साथ कर सकते नियमित अभिव्यक्ति API उस फ़िल्टर का हिस्सा है। –

+0

क्या आप इस प्रश्न को उत्तर के रूप में चिह्नित कर सकते हैं? –

+2

आपको अंतिम '।' से बचना चाहिए चरित्र। अन्यथा आप fooxml या barzip – Artur

3
(?i).*.xml|.*.zip 

आप केस संवेदी फाइल एक्सटेंशन मिलान चाहते हैं ।

+2

जैसी फ़ाइलों से मेल खाएंगे दूसरा '।' बच जाना होगा: '। * \। xml |। * \। ज़िप '। अन्यथा यानी। 'sample.axml' भी संसाधित किया जाएगा। – chris

0

ये उत्तर थोड़ा गलत हैं क्योंकि वे फ़िल्टर के माध्यम से foobarxml स्वीकार करते हैं। सही उत्तर दिए गए हैं:

.*/.xml|.*/.zip 
(?i).*/.xml|.*/.zip 
0

आप ठीक से स्ट्रिंग में बैकस्लैश से बचने और स्ट्रिंग संकेत '$' के अंत का उपयोग करना होगा: include=.*\\.xml$

संबंधित मुद्दे

 संबंधित मुद्दे