Я пытаюсь рекурсивно перебирать всю корневую директорию, к которой я прихожу после входа на ftp-сервер.Загрузить весь ftp-каталог Java (Apache Commons) - Сбой при первой попытке, после этого работает?
Я могу подключиться, все, что я действительно хочу сделать, там рекурсирует по всей структуре и загружает каждый файл и папку и имеет его в той же структуре, что и на ftp. То, что я до сих пор является рабочим методом загрузки, идет на сервер и получает всю мою структуру файлов, что является блестящим, за исключением того, что с первой попытки не удается, а затем работает во второй раз. Я получаю ошибку следующим образом:
java.io.FileNotFoundException: выход-каталог \ тест \ testFile.png (Система не может найти указанный путь)
мне удалось сделать загрузку функциональность каталога, который у меня есть локально, но не могу заставить загружать работу, после многочисленных попыток мне действительно нужна помощь.
Благодаря
EDIT: пример кода, я так далеко.
public static void download(String filename, String base)
{
File basedir = new File(base);
basedir.mkdirs();
try
{
FTPFile[] ftpFiles = ftpClient.listFiles();
for (FTPFile file : ftpFiles)
{
if (!file.getName().equals(".") && !file.getName().equals("..")) {
// If Dealing with a directory, change to it and call the function again
if (file.isDirectory())
{
// Change working Directory to this directory.
ftpClient.changeWorkingDirectory(file.getName());
// Recursive call to this method.
download(ftpClient.printWorkingDirectory(), base);
// Create the directory locally - in the right place
File newDir = new File (base + "/" + ftpClient.printWorkingDirectory());
newDir.mkdirs();
// Come back out to the parent level.
ftpClient.changeToParentDirectory();
}
else
{
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
String remoteFile1 = ftpClient.printWorkingDirectory() + "/" + file.getName();
File downloadFile1 = new File(base + "/" + ftpClient.printWorkingDirectory() + "/" + file.getName());
OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(downloadFile1));
boolean success = ftpClient.retrieveFile(remoteFile1, outputStream1);
outputStream1.close();
}
}
}
}
catch(IOException ex)
{
System.out.println(ex);
}
}
Что вы попробуете и где не удалась? – RealSkeptic
Добавлен код, который покажет вам мой текущий код, как он сидит. Спасибо за быстрый ответ. – Slippy
Ну, что вы пробовали (не часть, которая работает, часть, которую вы сказали, что вы пробовали и провалили), и каким образом это провалилось? – RealSkeptic