Listar a hierarquia completa de diretórios no servidor SFTP usando o JSch em Java

Eu quero exibir a hierarquia completa de um diretório em um local remoto usando o JSch. O local tem várias pastas e uma pasta pode ou não ter arquivos.

Código escrito por mim (tomado como referência pelo SFTP Ler todos os arquivos no diretório ):

sftpChannel.cd(remotePath); Vector files = sftpChannel.ls("*"); List ret=new ArrayList(); 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()+"file"); } if (true && entry.getAttrs().isDir()) { if (!entry.getFilename().equals(".") && !entry.getFilename().equals("..")) { ret.add(entry.getFilename()+"folder"); } } } } System.out.println(ret); 

Este código está mostrando apenas nomes de pastas de nível superior, os arquivos nessas pastas não são lidos.

Eu estou usando jsch-0.1.54.

obrigado

Apenas implemente uma function recursiva que repita em subdiretórios, como:

 public static void listDirectory( ChannelSftp channelSftp, String path, List list) throws SftpException { Vector files = channelSftp.ls(path); for (LsEntry entry : files) { if (!entry.getAttrs().isDir()) { list.add(path + "/" + entry.getFilename()); } else { if (!entry.getFilename().equals(".") && !entry.getFilename().equals("..")) { listDirectory(channelSftp, path + "/" + entry.getFilename(), list); } } } }