当前位置: 首页 > 知识库问答 >
问题:

如何通过FTP使用camel路由将所有文件从目录(包括子目录)移动到目标中没有子目录的特定目录?

许华清
2023-03-14

因为我对Apache-Camel非常陌生,所以我坚持使用一个用例。我希望使用camel路由实现将所有文件移动到目标中没有子目录的特定目录,

比如--

String src="ftp://username:password@host/srcDir/";
String destDir="ftp://username:password@host/destDir/";
fromUri = src+"?recursive=true&delete=true";
        
from(fromUri)
.to(destDir);
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);
            }
        }
    }

任何帮助实现这一点,路线本身将不胜感激!提前感谢!

共有1个答案

魏鸿禧
2023-03-14

听起来您正在寻找的是flatten选项,即:

from(fromUri)
  .to(destDir + "?flatten=true");
 类似资料:
  • 我在Windows中使用Java8,我试图实现一件简单的事情。假设我有一个目录和一个目录。我每天都在尝试将文件从源移动到目的地。下面是一个简单的java代码,使用NIO; null

  • 问题内容: 我正在建立一个允许人们上传文件,html页面等的网站…现在我遇到了问题。我有这样的目录结构: 现在,我想禁用PHP,但是要在/ USERS的目录和子目录中启用服务器端包含 可以做到这一点(以及如何:))?提前致谢。 顺便说一句,我使用WAMP服务器 问题答案: 尝试禁用.htaccess文件中的选项:

  • 本文向大家介绍python 遍历目录(包括子目录)下所有文件的实例,包括了python 遍历目录(包括子目录)下所有文件的实例的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇python 遍历目录(包括子目录)下所有文件的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 如何获取给定目录的所有子目录而没有文件(当前目录)或(父目录),然后使用函数中的每个目录? 问题答案: 您可以将glob()与选项一起使用 要么

  • 所以我开始使用Neovim /Spacevim,它真是太棒了! 我仍然在习惯一切,因为我以前从未使用过Vim或类似的东西。 我的问题围绕着在当前打开的项目的所有文件中搜索特定文本。 我正在使用文件管理器,我想知道如何在项目中的所有文件中搜索特定字符串。就像如果我想在当前打开的文件夹/目录中搜索,我该如何去做?主要目标是列出包含此搜索字符串的所有文件。 我已经安装了(以及),但在搜索所有文件中的特定

  • 问题内容: 列出1000多个目录和子目录中文件名的最快方法是什么? 编辑; 我使用的当前代码是: 问题答案: 看起来不错(递归遍历目录)瓶颈将是您需要执行的所有文件I / O操作,优化Java不会显示任何实际改进。