对于最新稳定版本,请使用 Spring Integration 7.0.0spring-doc.cadn.net.cn

远程文件模板

从Spring Integration 3.0开始,提供了基于FtpSession对象。 模板提供了发送、检索(作为输入流删除和重命名文件。 此外,还有一个执行提供了一种方法,允许调用者在会话上执行多个作。 无论哪种情况,模板都能可靠地结束会话。 更多信息请参见Javadoc for远程文件模板. FTP有一个子类:FtpRemoteFileTemplate.spring-doc.cadn.net.cn

4.1 版本增加了更多方法,包括getClientInstance(),提供对底层的访问FTPClient因此你可以访问底层API。spring-doc.cadn.net.cn

并非所有FTP服务器都正确实现了STAT <路径>命令。 有些路径不存在时返回阳性结果。 这NLST当路径是文件且存在时,命令会可靠地返回该名称。 然而,这不支持检查是否存在空目录,因为NLST当路径是目录时,总是返回一个空列表。 由于模板不知道路径是否代表目录,当路径似乎不存在时(当使用NLST). 这增加了开销,需要多次请求服务器。 从4.1.9版本开始,FtpRemoteFileTemplate提供FtpRemoteFileTemplate.ExistsMode该属性具有以下选项:spring-doc.cadn.net.cn

  • 统计:执行统计FTP命令(FTPClient.getStatus(path))以检查路径存在性。 这是默认设置,要求你的FTP服务器正确支持统计命令(带有路径)。spring-doc.cadn.net.cn

  • NLST:执行NLSTFTP命令——FTPClient.listName(path). 如果你在测试一条路径是文件的完整路径时,可以使用这个方法。 对于空目录则不起作用。spring-doc.cadn.net.cn

  • NLST_AND_DIRS:执行NLST先执行命令,如果没有返回文件,则退回一种技术,通过以下方式暂时切换工作目录。FTPClient.changeWorkingDirectory(path). 看FtpSession.exists()更多信息请见。spring-doc.cadn.net.cn

由于我们知道FileExistsMode.FAILCase 总是只找一个文件(而不是目录),我们安全使用NLST模式用于FtpMessageHandlerFtp外发网关组件。spring-doc.cadn.net.cn

对于其他情况,FtpRemoteFileTemplate可以扩展到在被覆写的中实现自定义逻辑存在()方法。spring-doc.cadn.net.cn

从5.0版本开始,新的RemoteFileOperations.invoke(作回调<F, T> action)方法已可行。 该方法允许多个远程文件作调用在相同的作用域内,线程有界,会期. 当你需要执行多个高级作时,这非常有用远程文件模板作为一个整体。 例如摘要RemoteFileOutboundGateway它与mput命令实现,我们执行对所提供目录中的每个文件进行作,递归地对其子目录进行作。 更多信息请参见 Javadocspring-doc.cadn.net.cn