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

问题描述 投票:1回答:1

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

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

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

谢谢。

java spring spring-mvc spring-integration
1个回答
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);
}
© www.soinside.com 2019 - 2024. All rights reserved.