如何使用Spring Integration File Support创建一个方法将文件从一个目录移动到另一个目录?

时间:2017-12-20 12:04:55

标签: java spring spring-mvc spring-integration

我自学春天。我想创建一个方法,其参数将是源目录,目标目录和文件名。

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

该方法可以将文件从源目录移动到目标目录。我经历过spring integration file support doc。此外,我还搜索了一些示例,但总是得到一些示例,其中两个目录都在xml文件中进行硬编码,并且将监视源目录,并在新文件到来时将文件移动到目标目录。如何创建我想要完成的方法。

谢谢。

1 个答案:

答案 0 :(得分:2)

嗯,Spring Integration没有提供这样的功能,因为它实际上是作为Java中的单个方法存在的。见java.nio.file.Fileshttps://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...)

  

将文件移动或重命名为目标文件。

以下是一些示例和说明:您可以在此处找到一些信息:http://tutorials.jenkov.com/java-nio/files.html

如果你仍在研究一些Spring Integration开箱即用的解决方案,FileWritingMessageHandler提供了一些功能,如果有效负载是File,则可以从一个文件复制到另一个文件:

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

这样FileWritingMessageHandler执行此逻辑:

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

rename()就是这样:

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