当前位置: 首页 > 面试题库 >

Apache Commons FTPClient.listFiles

亢建白
2023-03-14
问题内容

org.apache.commons.net.ftp.FTPClient在一个应用程序中使用FTP服务器。我能够connect,login,pwd和cwd。但是,当我尝试list文件时,它不会返回该目录中的文件列表,我肯定知道该目录中有文件。我正在使用方法FTPFile[] listFiles(),它返回的空数组FTPFile。

请在我正在尝试的代码段下面找到:

        String hostname = properties.getProperty("FTP_SERVER");
        String user = properties.getProperty("FTP_USER");
        String passwd = properties.getProperty("FTP_PASSWD");
        FTPClient client = new FTPClient();
        client.connect(hostname);
        client.login(user, passwd);
        String reply = client.getStatus();
        System.out.println(reply);
        client.enterRemotePassiveMode();
        client.changeWorkingDirectory("/uploads");
        FTPFile[] files = client.listFiles();
        System.out.println(files.length);
        for (FTPFile file : files) {
            System.out.println(file.getName());
        }

        String[] fileNames = client.listNames();
        if (fileNames != null) {
            for (String file : fileNames) {
                System.out.println(file);
            }
        }
        client.disconnect();

问题答案:

问题是您想在连接之后但在登录之前进入被动模式。您的代码对我没有任何回报,但这对我有用:

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


 类似资料:

相关阅读

相关文章

相关问答