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();
}
}