无法使用 Apache Commons FTPClient 访问 FTP 服务器上的子文件夹
Can't access subfolders on FTP server using Apache Commons FTPClient
我想下载 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");
我想下载 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");