无法使用Apache Commons FTPClient访问FTP服务器上的子文件夹

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用Apache Commons FTPClient访问FTP服务器上的子文件夹相关的知识,希望对你有一定的参考价值。

我想下载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数组的长度为零。

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

答案

你的代码还可以。它应该适用于大多数服务器。您的代码将此命令发送到服务器:

LIST /archive

这是正确的(假设服务器使用此路径语法[斜杠]来引用根文件夹的子文件夹)。


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

请尝试使用此代码:

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

以上将发送:

CWD archive
LIST

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

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

以上是关于无法使用Apache Commons FTPClient访问FTP服务器上的子文件夹的主要内容,如果未能解决你的问题,请参考以下文章

pyspark.sql 无法实例化 HiveMetaStoreClient - noclassfound from org.apache.commons.dbcp.connectionfactory

eclipse juno 中无法解析导入 org.apache.commons

无法将 Apache Commons FileUpload 与 Spring Boot multipart.resolve-lazily 一起使用

无法使用Apache Commons FTPClient访问FTP服务器上的子文件夹

Apache Commons Compress 无法在 tar 中添加硬链接

Apache Commons VFS - 无法解析文件