2017-01-20 2 views
0

Ich habe das folgende Problem: Ich möchte FTP-Komponente verwenden, um zu lesen und dann Dateien zusammen mit Pfaden relativ zum FTP-Home-Verzeichnis zu schreiben. Dafür verwende ich recursive = true im Frühjahr und es funktioniert gut. Das Problem ist, dass ich auch TempFileName verwenden, aber in der Zielposition * tmp-Dateien als $ {file: onlyname.noext} erstellt .tmp nicht im Zielverzeichnis gespeichert werden kann, aber im Hause direcotry dh wenn Quelle:Apache-Kamel-Datei-Komponente rekursiv und tempFileName

A 
|-> B 
|-> C 
    |->file.txt 

sollte das Ziel sein: arbeiten bezogen auf den Pfad

A 
|->file.tmp (temporary) 
|-> C 
    |->file.txt (file.tmp cannot be stored here!) 

Allerdings scheint TempFileName nur zu sein. Kann das geändert werden?

+0

an das endgültige Ziel des Verzeichnisses C wurde im Verzeichnis A gespeichert wird verschoben werden Versuchen Sie, 'tempFileName = ../$ {file: onlyname.noext}' zu setzen. Und siehe mehr Details in der Datei-Sprache: http://camel.apache.org/file-language.html –

+0

Hallo Claus. Vielen Dank für Ihre Antwort. Dies ist in der Tat das erste, was ich getan habe, aber es funktioniert nicht. Die Dateisprache funktioniert gut, aber das Problem ist, dass './' immer relativ zum vollständigen Namen der Datei ist, d.h. einschließlich des Pfades als rekursiv gesetzt ist. Wenn der rekursive Dateiname beispielsweise 'a/file.txt' lautet, würde Ihr Versuch tempFileName = 'a /../ file' geben, was zu einem Fehler führt. – mj596

+0

Ja, aber es ist ehrlich gesagt Mist, temporäre Dateien in einem anderen Ordner zu speichern. Speichern Sie die Datei mit dem Präfix .tmp und benennen Sie sie um, wenn Sie fertig sind. –

Antwort

0

Sie können dies heute nicht tun, aber wir haben eine Verbesserung, so dass Sie dies ab Camel 2.18.2 tun können. Dann können Sie ../${file:onlyname.noext}.tmp als den temporären Dateinamen verwenden.

Dies wurde in Ticket protokolliert: https://issues.apache.org/jira/browse/CAMEL-10737

0

Da die TMP-Suffix I am TEMPPREFIX-Option vorschlagen, Blick keine Anforderung war.

<to uri="file:///C?tempPrefix="../" /> 

führen würde diese dann auf Ihre Datei mit dem Namen file.txt, bis die gesamte Datei, um sie vollständig geschrieben, dann wird