当前位置: 首页 > 知识库问答 >
问题:

在Java中验证SFTP服务器上文件是否存在的简单方法

阮雅达
2023-03-14

我正在使用Apache Mina SSHD库编写一个SFTP客户端,特别是SSHD SFTP 2.3.0。我选择它而不是SSHJ库,因为它可以将字符串直接写入远程文件,并且也没有不必要的依赖关系。

任务:当将文件发送到SFTP服务器以制作先前文件的备份副本(如果有)时。

我研究了SftpClient类提供的所有可能性,其中我没有找到搜索文件的简单方法。

  • listDirreadDir方法,它们返回Iterable

当前的解决方案是获取文件的状态。如果没有这样的文件,则会抛出一个异常,例如“SFTP错误(SSH\u FX\u no\u such\u file):没有这样的文件或目录”。可以分析此消息,如果确实找不到文件,则不要进一步抛出此异常。代码如下:

    private boolean fileExists(SftpClient sftpClient, String remoteDest) throws IOException {
        try {
            return null != sftpClient.stat(remoteDest);
        } catch (SftpException e) {
            if (e.getStatus() != SftpConstants.SSH_FX_NO_SUCH_FILE) {
                LOGGER.error("Error finding file {}", remoteDest);
                throw e;
            }
            return false;
        }
    }

主要问题是这个解决方案很难看。

然而,在互联网上,我发现只有类似的解决方案使用库JSch和TrileadSSH-2Java。

也许还有另一种更简单、更有能力的方法来检查SFTP服务器上的文件?


共有1个答案

百里锋
2023-03-14

这是正确的解决方案。

SFTP协议没有“文件存在吗”查询/请求。最接近的等效项实际上是“统计”查询/请求。因此,即使您最喜欢的SFTP库有“文件存在吗”方法/应用编程接口,它也会在内部做您的代码做的事情。

JSch中的等价物:使用JSch,有没有办法在不执行ls的情况下判断远程文件是否存在?

 类似资料:
  • 本文向大家介绍Java使用SFTP上传文件到服务器的简单使用,包括了Java使用SFTP上传文件到服务器的简单使用的使用技巧和注意事项,需要的朋友参考一下 最近用到SFTP上传文件查找了一些资料后自己做了一点总结,方便以后的查询。具体代码如下所示: 这里的用户名密码都是自己设置,这里的方法进行了简单的封装,方便使用。 以上所述是小编给大家介绍的Java使用SFTP上传文件到服务器的简单使用,希望对

  • 本文向大家介绍vue在路由中验证token是否存在的简单实现,包括了vue在路由中验证token是否存在的简单实现的使用技巧和注意事项,需要的朋友参考一下 1. 在router/index.js进行验证 2. 代码如下: 以上这篇vue在路由中验证token是否存在的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 关于此的讨论很多,我了解使用委托方法并检查响应“ 404”的解决方案: 但我想有一个简单的解决方案,例如: 因为与委托在同一类中会有很多请求,并且我只想使用函数fileexists()检查响应。 有什么提示吗? 更新 我想我必须像下面这样做一个同步请求,但是我总是得到0x0000000000000000作为响应: 问题答案: 检查服务器上是否存在资源需要发送HTTP请求并接收响应。TC

  • 我正在创建一个Java程序,在该程序中,我将文件上传到特定路径上的服务器。我将用于。 所以,在上传文件之前,我想检查给定的目录是否存在于服务器上。 如何检查路径是否存在? 注意:我正在客户端上执行代码,该客户端将检查服务器上是否存在远程目录。所以请不要建议使用。

  • 本文向大家介绍在windows上用nodejs搭建静态文件服务器的简单方法,包括了在windows上用nodejs搭建静态文件服务器的简单方法的使用技巧和注意事项,需要的朋友参考一下 在windows上用nodejs搭建一个静态文件服务器,即使你一点基础没有也能学会nodejs静态文件服务器的搭建,本文介绍的非常详细,很适合零基础入门的朋友学习。 首先安装nodejs: •新建一个node文件夹

  • 问题内容: 如何在Java中检查Java文件是否存在于具有URL的远程服务器上(由HTTP服务)?我不想下载该文件,只需检查其存在。 问题答案: import java.net.; import java.io. ; 如果与URL的连接(使用HttpURLConnection)以HTTP状态代码200返回,则该文件存在。 编辑: 请注意,由于我们只关心它的存在与否,所以不需要请求整个文档。我们可以