我自学春天。我想创建一个方法,其参数将是源目录,目标目录和文件名。
boolean moveFile(String sourceDir, String targetDir, String fileName)
该方法可以将文件从源目录移动到目标目录。我经历过spring integration file support doc。此外,我还搜索了一些示例,但总是得到一些示例,其中两个目录都在xml文件中进行硬编码,并且将监视源目录,并在新文件到来时将文件移动到目标目录。如何创建我想要完成的方法。
谢谢。
答案 0 :(得分:2)
嗯,Spring Integration没有提供这样的功能,因为它实际上是作为Java中的单个方法存在的。见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...)
将文件移动或重命名为目标文件。
以下是一些示例和说明:您可以在此处找到一些信息: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);
}