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

新手上路,请多包涵

使用 JSch,有没有办法在不执行 ls 并遍历文件以查找名称匹配的情况下判断远程文件是否存在?

谢谢

原文由 cagcowboy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

(如果您正在使用库的 SFTP 部分,这是我没有考虑就做出的假设。)

我认为它的 ls(String path) 会接受文件名;我暂时无法检查。

如果没有,则无需手动迭代;您可以使用选择器变体:

 ls(String path, ChannelSftp.LsEntrySelector selector)

原文由 Dave Newton 发布,翻译遵循 CC BY-SA 3.0 许可协议

你也可以这样做:

 try {
    channelSftp.lstat(name);
} catch (SftpException e){
    if(e.id == ChannelSftp.SSH_FX_NO_SUCH_FILE){
    // file doesn't exist
    } else {
    // something else went wrong
        throw e;
    }
}

如果你对不存在的东西执行 lstat,你会得到一个 id 为 2 的 SftpExecption,否则你会得到关于该文件的信息。

原文由 zelinka 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题