Como obter a lista de arquivos de um servidor SFTP?

Estou com um problema e espero conseguir uma solução. Também escrevi algum código, mas ele precisa de algumas modificações.

Problema: tenho um servidor SFTP (para fins de privacidade, darei credenciais falsas) às quais preciso me conectar.

Nome do servidor: server-name porta: 22 nome de usuário: nome de usuário senha: senha

Quando eu me conecto ao servidor, ele automaticamente cai no diretório "/ FGV". dentro deste diretório existem outras pastas. Preciso pegar uma lista de mensagens xml do diretório "/ FGV / US / BS /" e colocá-las em uma lista (arquivos na forma de arquivo). Na lista, preciso ter o diretório do arquivo, o nome e o corpo do arquivo. Eu estava pensando em criar um objeto e colocar essas informações lá e criar uma lista desse objeto.

Meu código atual cria uma conexão e baixa apenas UM arquivo xml. Se houver dois arquivos xml, o arquivo na minha máquina local não terá nada como conteúdo.

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

public class SFTPinJava {

public SFTPinJava() {
}

public static void main(String[] args) {
    String SFTPHOST = "server-name";
    int SFTPPORT = 22;
    String SFTPUSER = "username";
    String SFTPPASS = "password";
    String SFTPWORKINGDIR = "/FGV";

    Session session = null;
    Channel channel = null;
    ChannelSftp channelSftp = null;

    try {
        JSch jsch = new JSch();
        session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT);
        session.setPassword(SFTPPASS);
        java.util.Properties config = new java.util.Properties();
        config.put("StrictHostKeyChecking", "no");
        session.setConfig(config);
        session.connect();
        channel = session.openChannel("sftp");
        channel.connect();
        channelSftp = (ChannelSftp) channel;
        channelSftp.cd(SFTPWORKINGDIR);
        byte[] buffer = new byte[1024];
        BufferedInputStream bis = new BufferedInputStream(
                channelSftp.get("/FGV/US/BS/FGVCustomsEntryLoaderService.xml"));
        File newFile = new File(
                "C:\\workspace\\Crap\\src\\org\\raghav\\stuff\\XML_FROM_SERVER.xml");
        OutputStream os = new FileOutputStream(newFile);
        BufferedOutputStream bos = new BufferedOutputStream(os);
        int readCount;
        //System.out.println("Getting: " + theLine);
        while ((readCount = bis.read(buffer)) > 0) {
            //System.out.println("Writing: ");
            bos.write(buffer, 0, readCount);
        }

        while(session != null){
            System.out.println("Killing the session");
            session.disconnect();
            bis.close();
            bos.close();
            System.exit(0);
        }

    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

}

Preciso alterar esse código para que ele pegue vários arquivos e os coloque em uma lista de objetos. esse objeto deve ter o diretório do arquivo, o nome e o corpo do arquivo.

Alguém pode me ajudar?

Obrigado antecipadamente.

questionAnswers(4)

yourAnswerToTheQuestion