Listar arquivos FTP utilizando FTPFile no Java

Bom dia galera do GUJ. Estou com um problema na listagem de arquivos FTP utilizando o FTPFile. Tenho um diretório que possui 78 arquivos e quando utilizo o método listFiles() da classe FTPClient do apache ele lista os arquivos e até filtra. Porém em um diretório maior com 1825 arquivos de tamanhos que varia de 0 a 7 MB não lista nenhum arquivo. Preciso listar esses arquivos, pegar o tamanho e a data do arquivo para salvá-los no Bando de Dados e acredito que o FTPFile me dará mais resultados, pois até então estou enviando comandos para o FTP me trazer esses dados e isso deixa minha aplicação muito lenta. Há uma forma de eu utilizar o FTPFile para tantos arquivos? Se tem, como configuro?

Meu código teste:

public void baixarComFtpFile() {
	FTPClient ftp = new FTPClient();
	FTPClientConfig config = new FTPClientConfig();
	
	ftp.configure(config);
	try {
		ftp.connect("meuendereco", 21);
		ftp.login("meulogin", "minha_senha");
		ftp.enterLocalPassiveMode();
		ftp.setFileType(FTP.BINARY_FILE_TYPE);
		ftp.changeWorkingDirectory("meudiretorio");

		FTPFile[] files = ftp.listFiles();
		files = ftp.listDirectories();

		for (FTPFile ftpFile : files) {
			System.out.println("Nome: " + ftpFile.getName());
			System.out.println("Tamanho: " + ftpFile.getSize());
			System.out.println("Data: " + new SimpleDateFormat("dd/MM/yyyy HH:mm:ss")
					.format(ftpFile.getTimestamp().getTime()));
		}
		System.out.println("Total: " + files.length);
		System.out.println("Fim em: " + new SimpleDateFormat("dd/MM/yyyy HH:mm:ss")
				.format(Calendar.getInstance().getTime()));
	} catch (SocketException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

por que vc faz, primeiro listFiles e depois listDirectories?

vc esta sobreescrevendo o array. talvez seja por isso q nao aparece nada.

Então peczenyj eu só estava fazendo um teste mas descobri o que tava acontecendo.
Ao setar o config na classe FTPClient ele aplicava configurações que acabavam não listando o restante dos arquivos. Olha como ficou:

public void viaFtpFile() {
System.out.println("Início em: " + new SimpleDateFormat(“dd/MM/yyyy HH:mm:ss”)
.format(Calendar.getInstance().getTime()));
FTPClient ftp = new FTPClient();
try {
ftp.connect(“endFTP”, 21);
ftp.login(“meuLogin”, “minhaSenha”);
ftp.enterLocalPassiveMode();
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.changeWorkingDirectory(“meuDiretorio”);

		FTPFile[] files = ftp.listFiles();
		int length = files.length;
		System.out.println(ftp.getReplyString());
		for (FTPFile ftpFile : files) {
			System.out.println("Nome: " + ftpFile.getName());
			System.out.println("Tamanho: " + ftpFile.getSize());
			System.out.println("Data: " + new SimpleDateFormat("dd/MM/yyyy HH:mm:ss")
					.format(ftpFile.getTimestamp().getTime()));
		}
		System.out.println("Total: " + length);
		System.out.println("Fim em: " + new SimpleDateFormat("dd/MM/yyyy HH:mm:ss")
				.format(Calendar.getInstance().getTime()));
	} catch (SocketException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
1 curtida