Apache Commons Net FTPClient e listFiles()
Alguém me pode explicar o que se passa com o seguinte código? Eu tentei diferentes hospedeiros, FTPClientConfigs, é adequadamente acessível via firefox / filezilla... O problema é que eu sempre fico vazia filelist sem quaisquer exceções (arquivos.comprimento = = 0). Eu uso o commons-net-2.1.jar instalado com Maven.
FTPClientConfig config = new FTPClientConfig(FTPClientConfig.SYST_L8);
FTPClient client = new FTPClient();
client.configure(config);
client.connect("c64.rulez.org");
client.login("anonymous", "anonymous");
client.enterRemotePassiveMode();
FTPFile[] files = client.listFiles();
Assert.assertTrue(files.length > 0);
32
3 answers
Encontrei!
O que se passa é que queres ... indique o modo passivo após a ligação, mas antes de se ligar.
O teu código não devolve nada para mim, mas isto funciona para mim.
import org.apache.commons.net.ftp.FTPClient;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPFile;
public class BasicFTP {
public static void main(String[] args) throws IOException {
FTPClient client = new FTPClient();
client.connect("c64.rulez.org");
client.enterLocalPassiveMode();
client.login("anonymous", "");
FTPFile[] files = client.listFiles("/pub");
for (FTPFile file : files) {
System.out.println(file.getName());
}
}
}
Dá - me esta saída:
c128 c64 c64.hu incoming plus4
81
Author: PapaFreud, 2014-09-02 21:45:04
Só o uso de enterLocalPassiveMode()
não funcionou para mim.
Usei o código que funcionou.
ftpsClient.execPBSZ(0);
ftpsClient.execPROT("P");
ftpsClient.type(FTP.BINARY_FILE_TYPE);
O exemplo completo é o seguinte:
FTPSClient ftpsClient = new FTPSClient();
ftpsClient.connect("Host", 21);
ftpsClient.login("user", "pass");
ftpsClient.enterLocalPassiveMode();
ftpsClient.execPBSZ(0);
ftpsClient.execPROT("P");
ftpsClient.type(FTP.BINARY_FILE_TYPE);
FTPFile[] files = ftpsClient.listFiles();
for (FTPFile file : files) {
System.out.println(file.getName());
}
5
Author: Suketu Patel, 2017-06-30 19:05:59
Normalmente o utilizador não precisa de uma senha, tente
client.login("anonymous", "");
3
Author: Gelvis, 2014-05-30 19:03:57