Search code examples
javaapache-commonsftp-client

Apache Commons Net FTPClient and listFiles()


Can anyone explain me what's wrong with the following code? I tried different hosts, FTPClientConfigs, it's properly accessible via firefox/filezilla... The problem is I always get empty filelist without any exceptions (files.length == 0). I use commons-net-2.1.jar installed with 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);

Solution

  • Found it!

    The thing is you want to enter passive mode after you connect, but before you log in. Your code returns nothing for me, but this works for me:

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

    Gives me this output:

    c128
    c64
    c64.hu
    incoming
    plus4