Java Apache Camel文件2仅包括源目录中的特定子文件夹

Java Apache Camel文件2仅包括源目录中的特定子文件夹,java,apache-camel,camel-ftp,Java,Apache Camel,Camel Ftp,我使用的是ApacheCamel文件2(SFTP)(最新版本)和Java8API。 我正在尝试开发一个MyRouteBuilder.java类,该类扩展RouteBuilder类并实现configure方法 我想将文件从源路径传输到目标路径。 在源端点中,指定URI参数“include”以包括源路径下特定子文件夹(如“子文件夹1、子文件夹2、子文件夹3”)中的文件 示例源URI: 1) “文件:\src\子文件夹1\.\.txt” 2) “文件:\src\子文件夹2\.\.txt” 我尝试了下面

我使用的是ApacheCamel文件2(SFTP)(最新版本)和Java8API。 我正在尝试开发一个MyRouteBuilder.java类,该类扩展RouteBuilder类并实现configure方法

我想将文件从源路径传输到目标路径。 在源端点中,指定URI参数“include”以包括源路径下特定子文件夹(如“子文件夹1、子文件夹2、子文件夹3”)中的文件

示例源URI: 1) “文件:\src\子文件夹1\.\.txt” 2) “文件:\src\子文件夹2\.\.txt”

我尝试了下面的多个例子,甚至 示例:

 1) include=.SubFolder[1-2]\.*\.txt
 2) include=.SubFolder1|SubFolder2\.*\.txt
 3) include=SubFolder[1-2]\.*\.txt
 4) include=SubFolder1\.*\.txt
 5) include=.SubFolder(?)\.*\.txt
什么都没用

请建议一种使用Java使用Apache Camel File2 API解决问题的方法

public void configure() throws Exception {

    String sftpUrl = "sftp://" + user + "@" + hostName + sourcePath + "?" + "noop=true"
            + "&recursive=true&include=.*\\.txt$"+"&strictHostKeyChecking=no" + "&useUserKnownHostsFile=true" + "&password=RAW("
            + password + ")&preferredAuthentications=publickey,keyboard-interactive,password";  

    System.out.println("\n\n sftpUrl + " + sftpUrl + "\n\n");

    from(sftpUrl)
        .log(" Copying File : ${file:name} ").process(exchange -> {
        System.out.println("1. Processing a File  --> = " + exchange);
    }).to("file://" + destPath)
            // ;
    .log("Uploading file ${file:parent} / ${file:name} complete.");
}

如@hk6279所示,FTP2继承File2,除非另有说明,否则在FTP2上可以使用File2行为。然而,@hk6279强调了OP可能遗漏的一个非常重要的部分

如果使用了诸如:include或exclude之类的选项,则只有文件(而不是目录)与有效文件名匹配。

也许这就是造成麻烦的原因


看起来您指的是FTP2组件,而不是file2组件。请查看以了解过滤是如何实现的。它不支持
include
选项,如中所示


您应该使用
antInclude
,因为它同时支持目录和文件。 顺便说一句,Camel网站正在进行全面的重新设计,同时可以从github浏览最新的组件文档

antInclude=F1/*.txt,F2/*.txt
看看:


另外,请注意,您可以按版本浏览文档(选择分支/标记)。

假定您已经尝试了来自的示例。你能给我们看一下你的路线生成器代码吗。“什么都不起作用”不是一个好的问题陈述。告诉是什么具体不起作用include参数regex不起作用string sftpur=“sftp://”+user++“@”+hostName+sourcePath+?“+”noop=true“+”&recursive=true&include=.SubFolder1\\\\\\\\\\.txt$“+”&strithhostkeychecking=no“+”&useUserKnownHostsFile=true“+”&password=RAW(“+password+”)&preferredAuthentications=公钥、键盘交互、密码”;这看起来像组件,而不是文件2。FTP2不支持
include
。请将您的整个路线张贴在问题中,而不是在此处的评论中。ftp2并不声称ftp2组件不支持
include
选项,但声明
请参阅文件以了解更多选项,因为文件中的所有选项都是继承的
存在的,因此您应该仅引用此声明
文件(而不是目录)如果使用了诸如:include或exclude之类的选项,则与有效文件名匹配。
from file可能正是OP面临的问题。稍后我们将尝试此操作并查看。尝试使用
antInclude
选项,因为它应该支持目录(对文件组件也是如此)示例:antInclude=F1/*.txt,F2/*.txtantclude uri选项在我尝试使用sftp url时工作正常。但是,当我尝试使用下面的url“file://”而不是“sftp://”时,它不起作用。file://C:/Input?noop=true&recursive=true&antInclude=F1/*.txt,F2/*.txtI是指当我将url与“file://”一起使用时,camel不会从子文件夹F1和F2传输文件