使用 Spring Integration,是否可以使用 ftp 入站 channel 适配器递归同步文件(包括子文件夹的文件)?

请您参考如下方法:

没有;但是您可以使用出站网关使用递归 MGET 获取完整的远程目录树...

@SpringBootApplication 
@IntegrationComponentScan 
public class So42324318Application { 
 
    public static void main(String[] args) { 
        ConfigurableApplicationContext context = SpringApplication.run(So42324318Application.class, args); 
        List<File> files = context.getBean(Gateway.class).fetchFiles("foo/*"); 
        System.out.println(files); 
        context.close(); 
    } 
 
    @MessagingGateway(defaultRequestChannel = "fetchRecursive") 
    public interface Gateway { 
 
        public List<File> fetchFiles(String remoteDir); 
 
    } 
 
    @Bean 
    @ServiceActivator(inputChannel = "fetchRecursive") 
    public FtpOutboundGateway gateway() { 
        // Create a recursive MGET gateway that gets the remote directory from the payload 
        FtpOutboundGateway gateway = new FtpOutboundGateway(sessionFactory(), "mget", "payload"); 
        gateway.setOptions("-R");  
        gateway.setLocalDirectoryExpression(new SpelExpressionParser().parseExpression("#remoteDirectory")); 
        return gateway; 
    } 
 
    @Bean 
    public SessionFactory<FTPFile> sessionFactory() { 
        return new CachingSessionFactory<>(ftpSF()); 
    } 
 
    private SessionFactory<FTPFile> ftpSF() { 
        DefaultFtpSessionFactory sf = new DefaultFtpSessionFactory(); 
        sf.setHost("10.0.0.3"); 
        sf.setUsername("ftptest"); 
        sf.setPassword("ftptest"); 
        sf.setClientMode(FTPClient.PASSIVE_LOCAL_DATA_CONNECTION_MODE); 
        return sf; 
    } 
 
} 

结果:

2017-02-19 09:55:09.351  INFO 61921 --- [           main] o.s.integration.ftp.session.FtpSession   : File has been successfully transferred from: foo/bar.tx 
2017-02-19 09:55:09.353  INFO 61921 --- [           main] o.s.integration.ftp.session.FtpSession   : File has been successfully transferred from: foo/bar.txt 
2017-02-19 09:55:09.356  INFO 61921 --- [           main] o.s.integration.ftp.session.FtpSession   : File has been successfully transferred from: foo/bar/abc.txt 
2017-02-19 09:55:09.358  INFO 61921 --- [           main] o.s.integration.ftp.session.FtpSession   : File has been successfully transferred from: foo/baz.txt 
2017-02-19 09:55:09.362  INFO 61921 --- [           main] o.s.integration.ftp.session.FtpSession   : File has been successfully transferred from: foo/foo/bar/qux.txt 
2017-02-19 09:55:09.364  INFO 61921 --- [           main] o.s.integration.ftp.session.FtpSession   : File has been successfully transferred from: foo/foo/baz/fiz.txt 
[foo/bar.tx, foo/bar.txt, foo/bar/abc.txt, foo/baz.txt, foo/foo/bar/qux.txt, foo/foo/baz/fiz.txt] 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!