Apache camel 骆驼文件组件如何发送整个文件夹

Apache camel 骆驼文件组件如何发送整个文件夹,apache-camel,Apache Camel,我有以下文件夹层次结构: D D1 D1doc1.txt D1doc2.otherext 自述文件 D2 D2doc1.txt othertext.txt 使用Camel文件组件,我想将repertory D1及其内容发送到另一个端点。到目前为止,我设法独立发送文件或一个剧目的全部内容,但我不知道如何使用前一个结构发送剧目D1及其内容(不仅仅是内容) 为了发送D1的所有内容,我写信: from("file://D/D1/?noop=true&recursive=true"

我有以下文件夹层次结构:

  • D
    • D1
      • D1doc1.txt
      • D1doc2.otherext
      • 自述文件
    • D2
      • D2doc1.txt
      • othertext.txt
使用Camel文件组件,我想将repertory D1及其内容发送到另一个端点。到目前为止,我设法独立发送文件或一个剧目的全部内容,但我不知道如何使用前一个结构发送剧目D1及其内容(不仅仅是内容)

为了发送D1的所有内容,我写信:

from("file://D/D1/?noop=true&recursive=true").to(.....)
它正确地发送D1中的所有内容。现在,为了将D1作为包含内容的完整目录发送,我尝试:

from("file://D/?fileName=D1&noop=true&recursive=true").to(.....)
当然,不使用camel文件显然是为了只使用文件,而不是我在这个链接上看到的目录:

然而,这对我来说既恼人又奇怪,因为我不得不将以前的层次结构更改为:

  • D
    • D1
      • D1
        • D1doc1.txt
        • D1doc2.otherext
        • 自述文件
    • D2
      • D2
        • D2doc1.txt
        • othertext.txt
因此,当我使用:

from("file://D/D1/?noop=true&recursive=true").to(.....)
它最终完成了我想要发送的目录。
真的没有更干净的方法吗?如果没有,背后的原因是什么?

使用recursive命令Camel向下移动子目录。您还可以使用“最小/最大深度”选项来控制距离和下潜距离

这是使用正确选项的清洁解决方案

例如,在unix上,find命令还具有minx/max depth选项,它在Camel文件组件中具有类似的概念

详情请浏览:


如果您不想在“另一端”构建结构化目录,您可以使用
flattern
选项。

这是一个有点旧的线程,但我相信它会帮助某些人

from("file:D:\\INPUTFOLDER?noop=false&recursive=true&maxDepth=NUMBEROFSUBDIR").process(new MyProcessor()).to("file:D:\\OUTPUTFOLDER");
在这里,我的名字是。。将从主节点返回+1 目录(INPUTFOLDER),它不会复制该文件夹,除非您 文件存在于其中,因为它支持FTP

实际上只是添加了“&minDepth=1”,并按照文档中的规定完成了这个技巧。。。