SFTP读取目录中的所有文件

我使用SFTP com.jcraft.jsch创建了一个成功的连接

我还在HostDir下创建了一个目录文件夹,如: channelSftp.mkdir("sftp.test");

现在我想读取主机目录下的所有文件/文件夹名称,我没有看到任何适当的方法或示例。

谢谢

用这个做了..

 ChannelSftp sftp = (ChannelSftp) channel; sftp.cd(hostDir); Vector files = sftp.ls("*"); for (int i = 0; i < files.size(); i++) { Object obj = files.elementAt(i); if (obj instanceof com.jcraft.jsch.ChannelSftp.LsEntry) { LsEntry entry = (LsEntry) obj; if (true && !entry.getAttrs().isDir()) { ret.add(entry.getFilename()); } if (true && entry.getAttrs().isDir()) { if (!entry.getFilename().equals(".") && !entry.getFilename().equals("..")) { ret.add(entry.getFilename()); } } } } System.out.println(ret); 

虽然接受的答案有效,但代码过于复杂并且存在许多问题,主要问题是从StringLsEntry

这是一个更简单的解决方案,没有模糊的演员表:

 List list = new ArrayList<>(); ChannelSftp sftp = (ChannelSftp) channel; Vector files = sftp.ls(path); for (LsEntry entry : files) { if (!entry.getFilename().equals(".") && !entry.getFilename().equals("..")) { list.add(entry.getFilename()); } } System.out.println(list); 

如果要以递归方式列出文件(包括子目录中的文件),请参阅:
使用Java中的JSch列出SFTP服务器上目录的完整层次结构