使用 JSch LS 方法列出带问号的目录
Listing directory with a question mark using JSch LS method
我编写了一个使用 JSch ChannelSftp.ls()
递归列出子目录及其文件的方法。在将带有 ?
的目录添加到 SFTP 服务器之前,它一直有效。由于 ?
是一个 glob 模式,因此 JSch 无法按我的预期工作。我花了一些时间研究,但似乎根本无法获取带有问号(或 * 出于相同原因)的目录的信息。 Here's a post sharing the exact same problem as I have.
有没有人遇到同样的问题并解决了?现在,我所能做的就是替换目录名。
确实,当您指定最后一个组件包含 *
或 ?
的路径时,例如:
/actual/path/with/question?mark
... JSch 认为最后一个组件是文件的 filter/pattern。它去除最后一个组件,列出路径 /actual/path/with
,然后仅将列出的文件过滤为匹配 question?mark
的文件(通常只返回一个条目,用于子文件夹本身,而不是子文件夹内容)。
要解决此问题,只需将另一个模式 (*
) 添加到路径中,例如:
/actual/path/with/question?mark/*
它使 JSch 列出路径 /actual/path/with/question?mark
,然后将列出的文件过滤为匹配 *
的文件(这将是所有文件)。
我编写了一个使用 JSch ChannelSftp.ls()
递归列出子目录及其文件的方法。在将带有 ?
的目录添加到 SFTP 服务器之前,它一直有效。由于 ?
是一个 glob 模式,因此 JSch 无法按我的预期工作。我花了一些时间研究,但似乎根本无法获取带有问号(或 * 出于相同原因)的目录的信息。 Here's a post sharing the exact same problem as I have.
有没有人遇到同样的问题并解决了?现在,我所能做的就是替换目录名。
确实,当您指定最后一个组件包含 *
或 ?
的路径时,例如:
/actual/path/with/question?mark
... JSch 认为最后一个组件是文件的 filter/pattern。它去除最后一个组件,列出路径 /actual/path/with
,然后仅将列出的文件过滤为匹配 question?mark
的文件(通常只返回一个条目,用于子文件夹本身,而不是子文件夹内容)。
要解决此问题,只需将另一个模式 (*
) 添加到路径中,例如:
/actual/path/with/question?mark/*
它使 JSch 列出路径 /actual/path/with/question?mark
,然后将列出的文件过滤为匹配 *
的文件(这将是所有文件)。