誰かが次のコードの何が問題になっているのか説明できますか?私は別のホスト、FTPClientConfigsを試しましたが、firefox/filezillaを介して適切にアクセスできます...問題は、例外なしに常に空のファイルリストを取得することです(files.length == 0)。 Mavenと共にインストールされるcommons-net-2.1.jarを使用します。
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);
それを見つけた!
接続した後、ログインする前にパッシブモードに入りたいにしたいということです。あなたのコードは私には何も返しませんが、これは私にとってはうまくいきます:
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 着信 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());
}
通常、匿名ユーザーはパスワードを必要としません。
client.login("anonymous", "");