Apache Commons Net FTPClient и listFiles()
может ли кто-нибудь объяснить мне, что не так со следующим кодом? Я пробовал разные хосты, FTPClientConfigs, он правильно доступен через firefox / filezilla... Проблема в том, что я всегда получаю пустой список файлов без каких-либо исключений (файлы.длина == 0). Я использую commons-net-2.1.устанавливаются jar с 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);
3 ответов
нашли его!
что вы хотите введите пассивный режим после подключения, но перед входом в. Ваш код ничего не возвращает для меня, но это работает для меня:
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());
}
}
}
дает мне этот выход:
c128 c64 c64.hu incoming plus4
только с помощью enterLocalPassiveMode()
не работает для меня.
я использовал следующий код, который работал.
ftpsClient.execPBSZ(0);
ftpsClient.execPROT("P");
ftpsClient.type(FTP.BINARY_FILE_TYPE);
полный пример, как показано ниже,
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());
}