2013-02-25 4 views
5

I durch Erweiterung der einfachste Filter benötigen: F. E. Datei 20120523.173227.CustomerMaster05092012.QWERTY.xml Route:Wie Dateien mit Erweiterungen filtern Parameter verwenden, umfassen in Camel Komponente File2

Schlenker Meta-Zeichen '*' in der Nähe von Index 0

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) 

ok vielleicht mein schlecht:

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

nicht funktioniert. Ich lege die ganze Datei mit:

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

Ganze Datei ist in Ordnung. Lassen Sie uns versuchen, * in der Mitte des Dateinamens

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

und wieder ist es in Ordnung. Lassen Sie uns nur eine Ziffer in Dateinamen setzen

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

noup, Kamel solche Dateien nicht gefunden Ich habe versucht, entkam Sternchen aber es did't Hilfe.

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

Datei wurde einfach ignoriert. so Frage 1: wie asterisk verwenden?

und Frage 2: Wie multimple Dateierweiterungen verwenden, wie include = .xml; .zip

thks

Antwort

11

verdammt, {хорошая мысля приходит опосля}, mit Brute-Force-I für den korrekten Wert herausgefunden, sind:

.*.xml|.*.zip 
+5

Ja, es ist nur ein regulärer Ausdruck, so was auch immer Sie mit dem Java tun können Die Regular Expression API ist Teil dieses Filters. –

+0

Können Sie diese Frage als beantwortet markieren? –

+2

Sie sollten die letzte "." Charakter. Ansonsten werden Sie Dateien wie fooxml oder barzip übereinstimmen – Artur

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

Wenn Sie Groß- und Kleinschreibung Dateierweiterung Anpassung wollen .

+2

Der zweite ‚‘ muss maskiert werden: '. * \. xml |. * \. zip'. Sonst. 'sample.axml' wird ebenfalls verarbeitet. – chris

0

Diese Antworten sind ein bisschen falsch, da sie foobarxml durch die Filter übernehmen. Richtige Antworten sind:

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

Sie haben richtig den umgekehrten Schrägstrich in Zeichenfolge zu entkommen und das Ende der Zeichenfolge Zeichen ‚$‘ verwenden: include=.*\\.xml$

Verwandte Themen