Опрос определенного имени файла с локального на FTP-сервер - PullRequest
0 голосов
/ 05 декабря 2018

Я хочу отправить определенный файл из локальной папки на FTP, эта папка содержит разные csv-файлы, я хочу отправить только определенный.Вот код, который я использую, но он отправляет все файлы CSV в этой папке, как я могу сделать так, чтобы он смотрел, есть ли этот конкретный файл, например, «foo.csv», если он там есть, то отправьте его на FTP

public IntegrationFlow localToFtpFlow(Branch myBranch){
        return IntegrationFlows.from(Files.inboundAdapter(new File(myBranch.getBranchCode()))//.patternFilter("final" + myBranch.getBranchCode() +".csv")
                    .filter(new ChainFileListFilter<File>()
                            .addFilter(new RegexPatternFileListFilter("final" + myBranch.getBranchCode() +".csv"))
                            .addFilter(new FileSystemPersistentAcceptOnceFileListFilter(new SimpleMetadataStore(), "foo"))),
                        //.filter(new FileSystemPersistentAcceptOnceFileListFilter(new SimpleMetadataStore(), "foo")),
                e -> e.poller(Pollers.fixedDelay(10_000)))

                .log()
                .handle(Ftp.outboundAdapter(createNewFtpSessionFactory(myBranch), FileExistsMode.REPLACE)
                        .useTemporaryFileName(true)
                        .autoCreateDirectory(true)
                        .remoteDirectory(myBranch.getFolderPath()))
                .get();
    }

Я попытался добавить patterfilter или regexfilter, как показано ниже, но я получил ошибку.

IntegrationFlows.from(Files.inboundAdapter(new File(myBranch.getBranchCode())).patternFilter("final" + myBranch.getBranchCode() +".csv")

Ошибка при запуске.

The 'filter' reference is mutually exclusive with either the 'filename-pattern' or 'filename-regex' attribute.

Попытка поискадля решения, но не мог получить ясное.

1 Ответ

0 голосов
/ 05 декабря 2018

Когда вам нужно настроить несколько фильтров на Files.inboundAdapter(), вам следует рассмотреть возможность использования CompositeFileListFilter или ChainFileListFilter.Скомпонуйте ваши ChainFileListFilter и SimplePatternFileListFilter в этом и вставьте композитный фильтр в этот параметр .filter().

.patternFilter() и .regexFilter() существуют для удобства, и они действительно взаимоисключающие с.filter().

Подробнее о композиции см. В Документах: https://docs.spring.io/spring-integration/docs/current/reference/html/files.html#file-reading

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...