不知道nlst
命令是否支持筛选
下面是代码示例:
筛选器实例:
private FileListFilter lastModifiedFilter(){
LastModifiedFileListFilter fileListFilter = new LastModifiedFileListFilter();
fileListFilter.setAge(120, TimeUnit.SECONDS);
return fileListFilter;
}
@Bean
public IntegrationFlow deleteFiles(){
return IntegrationFlows.from("integration.channel.bulk-delete")
.handle(Sftp.outboundGateway(sftpSessionFactory(),
AbstractRemoteFileOutboundGateway.Command.NLST,"headers[path]")
.filter(lastModifiedFilter()))
.get();
@Bean
public IntegrationFlow deleteFiles(){
return IntegrationFlows.from("integration.channel.bulk-delete")
.handle(Sftp.outboundGateway(sftpSessionFactory(),
AbstractRemoteFileOutboundGateway.Command.NLST,"headers[path]")
.filterFunction(file->{
Instant decidedTime = Instant.now().minus(120, ChronoUnit.SECONDS);
return Instant.ofEpochSecond(file.getAttrs().getMTime()).isBefore(decidedTime);
}))
.log()
.get();
更新
下一个handle方法中的RM命令不会删除,我还在dorm()
方法中放置了一个断点,尽管我的for循环中有文件,但它不会停止
@Bean
public IntegrationFlow deleteFiles(){
return IntegrationFlows.from("integration.channel.bulk-delete")
.handle(Sftp.outboundGateway(sftpSessionFactory(),
AbstractRemoteFileOutboundGateway.Command.LS,"headers[path]")
.options(AbstractRemoteFileOutboundGateway.Option.NAME_ONLY)
.filterFunction(file->{
Instant decidedTime = Instant.now().minus(120, ChronoUnit.SECONDS);
return Instant.ofEpochSecond(file.getAttrs().getMTime()).isBefore(decidedTime);
}))
.log()
.handle(fileList->{
List<String> files = (List<String>) fileList.getPayload();
for (String remoteFile: files) {
Sftp.outboundGateway(sftpSessionFactory(),
AbstractRemoteFileOutboundGateway.Command.RM,
"headers[file_remoteDirectory]+"+remoteFile);
}
})
.get();
NLST只获取文件名,因此没有时间戳可用于筛选。
NLST当前根本不应用任何筛选器。
使用LS(可能与递归-r
选项一起使用)。
我想把文件从远程服务器拉到我的本地服务器。我正在使用Spring Integration SFTP来拉文件。我有以下配置: 我不想在成功拉取后从remotedir中删除文件。这里发生的事情是每30秒,从remotedir的文件就会被拉到我的本地文件。我希望spring batch程序在第一次之后停止,不要再次拉出相同的文件。我怎样才能做到这一点?
问题内容: 有没有一种方法可以用Java从远程git存储库中以编程方式下载单个文件? 我更喜欢使用尽可能少的带宽的解决方案,最好只下载单个文件。我不需要浏览存储库,我已经有了文件的路径。 我更喜欢不依赖于其他应用程序的解决方案(例如,在计算机上安装另一个git客户端)。一个包含git客户端实现本身的Java库是最佳的。 我可以使用SVNKit与Subversion进行类似的操作,并且我已经看到有g
问题内容: 有没有办法从或从中获取文件名? 问题答案: 看起来答案是否定的: http://download.oracle.com/javase/1.4.2/docs/api/java/io/FileOutputStream.html http://docs.oracle.com/javase/7/docs/api/index.html?java/io/FileOutputStream.html
我试图通过sftp协议使用JSch库读取文件: 问题是我在代码的最后一行遇到以下异常: 我在谷歌上搜索了一下,发现这个错误可能来自sftp服务器,通常发生在上传过程中(空间不足等)。因此,我在sftp服务器上设置了日志记录(调试级别),只看到以下内容: 没有别的了。我不知道我还能调查什么,因为我从双方都获得了所有相关日志:(远程机器是一台带有OpenSSH的Debian。
本文向大家介绍php获取远程文件大小,包括了php获取远程文件大小的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php获取远程文件大小的方法,分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的php程序设计有所帮助,大家能够喜欢小便的文章,大家共同进步。
问题内容: 如果我有文件指针,是否可以获取文件名? 可以使用吗? 问题答案: 您可以通过获得路径。例: 如果 只 需要文件名,则可能需要: 文件对象文档(适用于Python 2)在此处。