【问题标题】:Can't access subfolders on FTP server using Apache Commons FTPClient无法使用 Apache Commons FTPClient 访问 FTP 服务器上的子文件夹
【发布时间】:2019-05-21 22:14:53
【问题描述】:

我想下载 FTP 服务器子文件夹中的文件,但我看到我的客户端无法访问子文件夹。

我编写了简单的代码来列出子文件夹中的所有文件:

 public static void main(String[] args) throws IOException {
    FTPClient ftpClient = new FTPClient();

    ftpClient.connect(HOST, PORT);
    ftpClient.login(USER, PASS);
    ftpClient.enterLocalPassiveMode();
    ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

    FTPFile[] files = ftpClient.listFiles("/archive");
    int length = files.length;
    System.out.println("Number of files: " + length);

    ftpClient.logout();
    ftpClient.disconnect();
}

files数组的长度为零。

当我在主目录上运行此程序时,文件已正确列出。

【问题讨论】:

    标签: java ftp apache-commons ftp-client apache-commons-net


    【解决方案1】:

    您的代码没问题。它应该适用于大多数服务器。您的代码会将此命令发送到服务器:

    LIST /archive
    

    没错(假设服务器使用此路径语法 [slash] 来引用根文件夹的子文件夹)。


    但是一些(不知名的)服务器在传递给LIST 命令的参数方面存在问题。

    试试这个代码:

    ftpClient.cwd("archive");
    FTPFile[] files = ftpClient.listFiles();
    

    以上将发送:

    CWD archive
    LIST
    

    另一个值得尝试的方法是删除前导斜杠,因为服务器可能使用不同的路径分隔符:

    FTPFile[] files = ftpClient.listFiles("archive");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-29
      • 2014-11-21
      • 1970-01-01
      • 2013-08-04
      • 2015-07-06
      • 2020-08-06
      • 1970-01-01
      • 2012-01-18
      相关资源
      最近更新 更多