Listar pasta de um ftp. Identação

Eae pessoal, tenho uma dúvida em relação a identação em java.
Estou desenvolvendo um aplicativo que faz a sincronização do computador local com um servidor ftp,
estou tendo problemas para listar os arquivos e pastas do servidor ftp, estou usando “identação” mas lista apenas
as primeiras pastas e arquivos dentro da pasta ate o ultimo arquivo ou subpasta.
EX:
pasta1 <- exibe
pasta2 <- exibe
pasta3 <- exibe
arquivo1 <- exibe
arquivo1 <- não exibe
arquivo1 <- não exibe

gostaria de saber onde estou errando no código abaixo.

public class Sincronizar {

    private Conectar conectar = new Conectar();
    private DefaultListModel dlm = new DefaultListModel();
    private FTPFile file;
    private FTPFile[] files;
    private FTPFile[] lista = null;
    private int cont = 0;

    public Sincronizar(ObjConectar objCon) {
        conectar = (Conectar) objCon.getSource();
    }

    public DefaultListModel listarDiretorios() throws IOException {
        this.files = this.conectar.ftp.listFiles();
        this.file = this.files[7];
        listarDiretorio(this.file, 0);
        return this.dlm;
    }

    private void listarDiretorio(FTPFile file, int nivel) throws IOException {
        if (file.isDirectory()) {
            this.dlm.add(cont, getIdentacao(nivel) + file.getName());
            cont++;
            if (this.conectar.ftp.changeWorkingDirectory(file.getName())) {
                this.lista = this.conectar.ftp.listFiles();
            } else {
                JOptionPane.showMessageDialog(null, "Não foi possivel alterar o diretório.");
            }
            for (int i = 0; i < this.lista.length; i++) {
                if (this.lista[i].getName().equals(".") || this.lista[i].getName().equals("..")) {
                } else {
                    listarDiretorio(this.lista[i], nivel + 1);
                }
            }
        } else {
            this.dlm.add(cont, getIdentacao(nivel) + file.getName());
            cont++;
        }
    }

    private String getIdentacao(int nivel) {
        StringBuffer buffer = new StringBuffer();
        for (int i = 0; i < nivel; i++) {
            buffer.append("  ");
        }
        return buffer.toString();
    }
}