org.apache.commons.net.ftp.FTPClient listFiles 始终 returns 来自根目录的文件,而不管参数中给出的路径名如何

org.apache.commons.net.ftp.FTPClient listFiles always returns files from root directory irrespective of the pathname given in argument

class FTPClient 中的 listFiles 始终从根目录返回目录或文件,即使路径作为参数给出也是如此。

public static void main(String[] args) {
    String server = "192.168.0.60";
    int port = 21;
    FTPClient ftpClient = new FTPClient();
    try {

        ftpClient.connect(server,port);
        ftpClient.enterLocalPassiveMode();
        ftpClient.login("anonymous", "");
        FTPFile[] files = ftpClient.listFiles("/StorageCard");
        for(FTPFile ftpFile: files) {
            System.out.println(ftpFile.getName());
        }
    } catch(IOException io) {
        io.printStackTrace();
    }
}

StorageCard 是根文件夹中的一个目录

输出我得到的是

  1. 网络内部存储
  2. WinDrive
  3. 存储卡
  4. 申请数据
  5. 我的文档
  6. 程序文件
  7. Windows
  8. .........

您应该在使用 listFiles()

之前更改工作目录
ftpClient.changeWorkingDirectory("StorageCard");
FTPFile[] files = ftpClient.listFiles();