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);
虽然接受的答案有效,但代码过于复杂并且存在许多问题,主要问题是从String
为LsEntry
。
这是一个更简单的解决方案,没有模糊的演员表:
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服务器上目录的完整层次结构