Не удается получить доступ к подпапкам на FTP-сервере с помощью Apache Commons FTPClient - PullRequest
0 голосов
/ 21 декабря 2018

Я хочу загрузить файлы, которые находятся в подпапках на 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 равна нулю.

Когда я запускаю эту программу в главном каталоге, файлы отображаются правильно.

1 Ответ

0 голосов
/ 21 декабря 2018

Ваш код в порядке.Он должен работать на большинстве серверов .Ваш код отправит эту команду на сервер:

LIST /archive

Это правильно (если сервер использует этот синтаксис пути [косая черта] для ссылки на подпапку корневой папки).


Но на некоторых (неясных) серверах возникают проблемы с аргументами, передаваемыми команде LIST.

Попробуйте использовать вместо этого код:

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

Вышеприведенный код отправит:

CWD archive
LIST

Еще один подход, который стоит попробовать, - это удалить ведущую косую черту как сервер.может использовать другой разделитель пути:

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