gpt4 book ai didi

java - 如何使用 spring 集成从 sftp 移动到本地目录时将不同文件保存到不同位置

转载 作者:行者123 更新时间:2023-12-01 16:23:15 24 4
gpt4 key购买 nike

   @Bean
public SessionFactory<LsEntry> sftpSessionFactory() {
DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory(true);
factory.setHost("localhost");
factory.setPort(port);
factory.setUser("foo");
factory.setPassword("foo");
factory.setAllowUnknownKeys(true);
factory.setTestSession(true);
return new CachingSessionFactory<LsEntry>(factory);
}

@Bean
public SftpInboundFileSynchronizer sftpInboundFileSynchronizer() {
SftpInboundFileSynchronizer fileSynchronizer = new SftpInboundFileSynchronizer(sftpSessionFactory());
fileSynchronizer.setDeleteRemoteFiles(false);
fileSynchronizer.setRemoteDirectory("foo");
fileSynchronizer.setFilter(new SftpSimplePatternFileListFilter("*.xml"));
return fileSynchronizer;
}

@Bean
@InboundChannelAdapter(channel = "sftpChannel", poller = @Poller(fixedDelay = "5000"))
public MessageSource<File> sftpMessageSource() {
SftpInboundFileSynchronizingMessageSource source =
new SftpInboundFileSynchronizingMessageSource(sftpInboundFileSynchronizer());
source.setLocalDirectory(new File("sftp-inbound"));
source.setAutoCreateLocalDirectory(true);
source.setLocalFilter(new AcceptOnceFileListFilter<File>());
source.setMaxFetchSize(1);
return source;
}

@Bean
@ServiceActivator(inputChannel = "sftpChannel")
public MessageHandler handler() {
return new MessageHandler() {

@Override
public void handleMessage(Message<?> message) throws MessagingException {
System.out.println(message.getPayload());
}

};
}

使用此(Spring 集成)代码,我可以将文件从 SFTP 移动到本地目录。但我想将所有类似文件移动到一个文件夹,即所有 pdf 到一个文件夹,所有 xml 文件到另一个文件夹。我怎样才能做到这一点 ?

最佳答案

该代码执行相反的操作(发送到 SFTP)。

使用出站网关列出(LS)并获取每个文件并将其放入特定目录中。

https://docs.spring.io/spring-integration/docs/5.3.0.RELEASE/reference/html/sftp.html#sftp-outbound-gateway

关于java - 如何使用 spring 集成从 sftp 移动到本地目录时将不同文件保存到不同位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62213714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com