Spring 集成文件观察器

Spring integration file watcher

我正在为文件观察器使用 spring 集成,并且我能够在指定的时间内成功地轮询文件。但我想查看指定目录并获取文件列表并处理它们而不是处理单个文件。下面是代码片段

@Bean
public IntegrationFlow processFileFlow() {
    return IntegrationFlows
    .from("fileInputChannel")
    .handle("fileProcessor", "process").get();
}

@Bean
public MessageChannel fileInputChannel() {
    return new DirectChannel();
}
public class FileProcessor {

    public void process(List<File> files) { // I want this method to accept list of files
        //here I want to get list of files but I am always receiving individual files only 
    }

}

我尝试通过添加 FileListFilter 来 return 文件列表,但是 process() 没有选择文件列表作为参数,而是只有单个文件出现

如果您的目标是将目录作为输入并自己列出文件,那么您一定不要研究 FileReadingMessageSource 及其 WatchService 功能。

你的 process() 可能只是收到一个 File 对象作为输入目录,然后你调用它的 public File[] listFiles() { 并根据你的逻辑做任何你需要的事情。

您还可以使用 java.nio.file.Files 功能来完成您的任务。

我的意思是,仅列出目录中的文件来证明 fully-blown Spring 集成组件的合理性并不复杂。