代码之家  ›  专栏  ›  技术社区  ›  projun14

使用JSch LS方法列出带问号的目录

  •  1
  • projun14  · 技术社区  · 7 年前

    我编写了一个使用JSch递归列出子目录及其文件的方法 ChannelSftp.ls() 。在找到一个目录 ? 已添加到SFTP服务器。自从 ? 是一种全局模式,JSch并没有像我预期的那样工作。我花了一些时间研究,但似乎根本不可能获得带有问号的目录信息(或者出于同样的原因)。 Here's a post sharing the exact same problem as I have.

    有没有人有同样的问题并解决了?现在,我所能做的就是替换目录名。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Martin Prikryl    7 年前

    实际上,当您指定最后一个组件包含 * ? ,例如:

    /actual/path/with/question?mark
    

    。。。JSch认为最后一个组件是文件的过滤器/模式。它剥离最后一个组件,列出路径 /actual/path/with ,然后仅将列出的文件筛选到匹配的文件 question?mark (通常只为子文件夹本身返回一个条目,而不是子文件夹内容)。


    要解决这个问题,只需添加另一个模式( * )到如下路径:

    /actual/path/with/question?mark/*
    

    它使JSch列出路径 /actual/path/with/question?mark ,然后将列出的文件筛选到匹配的文件 * (这将是所有的)。