|
对于最新稳定版本,请使用 Spring Integration 7.0.0! |
用远程文件模板
从Spring Integration 3.0开始,提供了基于FtpSession对象。
模板提供了发送、检索(作为输入流删除和重命名文件。
此外,还有一个执行提供了一种方法,允许调用者在会话上执行多个作。
无论哪种情况,模板都能可靠地结束会话。
更多信息请参见Javadoc for远程文件模板.
FTP有一个子类:FtpRemoteFileTemplate.
4.1 版本增加了更多方法,包括getClientInstance(),提供对底层的访问FTPClient因此你可以访问底层API。
并非所有FTP服务器都正确实现了STAT <路径>命令。
有些路径不存在时返回阳性结果。
这NLST当路径是文件且存在时,命令会可靠地返回该名称。
然而,这不支持检查是否存在空目录,因为NLST当路径是目录时,总是返回一个空列表。
由于模板不知道路径是否代表目录,当路径似乎不存在时(当使用NLST).
这增加了开销,需要多次请求服务器。
从4.1.9版本开始,FtpRemoteFileTemplate提供FtpRemoteFileTemplate.ExistsMode该属性具有以下选项:
-
统计:执行统计FTP命令(FTPClient.getStatus(path))以检查路径存在性。 这是默认设置,要求你的FTP服务器正确支持统计命令(带有路径)。 -
NLST:执行NLSTFTP命令——FTPClient.listName(path). 如果你在测试一条路径是文件的完整路径时,可以使用这个方法。 对于空目录则不起作用。 -
NLST_AND_DIRS:执行NLST先执行命令,如果没有返回文件,则退回一种技术,通过以下方式暂时切换工作目录。FTPClient.changeWorkingDirectory(path). 看FtpSession.exists()更多信息请见。
由于我们知道FileExistsMode.FAILCase 总是只找一个文件(而不是目录),我们安全使用NLST模式用于FtpMessageHandler和Ftp外发网关组件。
对于其他情况,FtpRemoteFileTemplate可以扩展到在被覆写的中实现自定义逻辑存在()方法。
从5.0版本开始,新的RemoteFileOperations.invoke(作回调<F, T> action)方法已可行。
该方法允许多个远程文件作调用在相同的作用域内,线程有界,会期.
当你需要执行多个高级作时,这非常有用远程文件模板作为一个整体。
例如摘要RemoteFileOutboundGateway它与mput命令实现,我们执行放对所提供目录中的每个文件进行作,递归地对其子目录进行作。
更多信息请参见 Javadoc。