2017-12-20 3 views
1

Ich bin selbstlernender Frühling. Ich möchte eine Methode erstellen, deren Parameter Quellverzeichnis, Zielverzeichnis und Dateiname sind.Wie erstellt man eine Methode zum Verschieben von Dateien von einem Verzeichnis in ein anderes mithilfe der Spring Integration File Support?

boolean moveFile(String sourceDir, String targetDir, String fileName) 

Die Methode kann die Datei aus dem Quellverzeichnis in das Zielverzeichnis verschieben. Ich bin durch spring integration file support doc gegangen. Auch habe ich für Beispiele gegooglet, aber immer Beispiele, wo beide Verzeichnisse hart in xml-Datei codiert, und das Quellverzeichnis wird überwacht, und die Datei in das Zielverzeichnis verschoben, wenn neue Datei kommt. Wie kann ich die Methode erstellen, die ich erreichen möchte?

Vielen Dank.

Antwort

2

Nun, Spring Integration bietet keine solche Funktionalität, weil es wirklich als eine einzige Methode in Java existiert. Siehe java.nio.file.Files: https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#move(java.nio.file.Path,%20java.nio.file.Path,%20java.nio.file.CopyOption...)

Verschieben oder eine Datei in eine Zieldatei umbenannt.

Hier einige Beispiele und Erklärungen: Sie einige Informationen finden Sie hier: http://tutorials.jenkov.com/java-nio/files.html

Wenn Sie noch in eine Frühlings Integration out-of-the-Box-Lösung suchen, bietet die FileWritingMessageHandler einige Funktionen von kopieren einer Datei zur anderen, wenn die Nutzlast ist ein File:

<int-file:outbound-channel-adapter id="moveFile" 
            directory="/destinationDir" 
            delete-source-files="true" 
            filename-generator-expression="'foo.txt'" /> 

auf diese Weise die FileWritingMessageHandler führt diese Logik:

if (!FileExistsMode.APPEND.equals(this.fileExistsMode) && this.deleteSourceFiles) { 
     rename(sourceFile, resultFile); 
     return resultFile; 
} 

Wo rename() ist genau das:

private static void rename(File source, File target) throws IOException { 
    Files.move(source.toPath(), target.toPath(), StandardCopyOption.REPLACE_EXISTING); 
} 
+0

Ok. Dann kann ich vollständige Quell- und Dateinamen angeben. Können Sie mir bitte einen Code zeigen, um zu wissen, wie es funktioniert? Ich bin ein Anfänger in Java und Spring –

+0

Siehe ein EDIT in meiner Antwort. Es gibt einige neue Link- und Code-Snippets für Ihre Betrachtung –

Verwandte Themen