Поскольку я новичок в Apache -Camel , я остановился на варианте использования. Я хочу добиться перемещения всех файлов в указанный каталог c без подкаталогов в целевом объекте, используя маршрут верблюда,
, например -
SourceDirectory / file1. xml SourceDirectory / subDir1 / file2. xml SourceDirectory / subDir2 / file3. xml SourceDirectory / subDir3 / subDir4 / file4. xml
следует переместить в целевой каталог
destDir / file1. xml destDir / файл2. xml destDir / file3. xml destDir / file4. xml
Приведенный ниже код копирует файл, включая все подкаталоги, в пункт назначения
String src="ftp://username:password@host/srcDir/";
String destDir="ftp://username:password@host/destDir/";
fromUri = src+"?recursive=true&delete=true";
from(fromUri)
.to(destDir);
Для этого в настоящее время я использую ftp-клиент
private void moveOverFTP(String from, String to) {
FTPClient ftpClient = new FTPClient();
try {
URL url = new URL(from);
String[] info = url.getUserInfo().split(":");
ftpClient.connect(url.getHost());
ftpClient.login(info[0], info[1]);
String srcFolderPath = url.getPath();
String targetFolder = new URL(to).getPath();
move(srcFolderPath, targetFolder, ftpClient);
ftpClient.logout();
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
}
private void move(String srcFolderPath, String targetFolder, FTPClient ftpClient) throws IOException {
FTPFile[] files = ftpClient.listFiles(srcFolderPath);
for (FTPFile file : files) {
String fileName = file.getName();
if (file.isDirectory()) {
String tempSrcPath = srcFolderPath + fileName + "/";
move(tempSrcPath, targetFolder, ftpClient);
// delete empty directory
ftpClient.removeDirectory(tempSrcPath);
} else {
System.out.println("Moving "+srcFolderPath + fileName +" to = "+ targetFolder);
ftpClient.rename(srcFolderPath + fileName, targetFolder + fileName);
}
}
}
Любая помощь в достижении этого в самом маршруте будет оценена! Заранее благодарю!