camel文件组件如何发送整个文件夹

时间:2016-03-09 22:37:34

标签: apache-camel

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

  • d
    • D1
      • D1doc1.txt
      • D1doc2.otherext
      • 的Readme.txt
    • D2
      • D2doc1.txt
      • othertext.txt

使用Camel文件组件,我想将汇编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文件显然只是为了文件工作而不是像我在这个链接上看到的目录:

http://grokbase.com/t/camel/users/1485bjq5zr/polling-a-directory-for-inner-directories

然而,对我来说这看起来很烦人和奇怪,因为我必须将hack更改为先前的层次结构:

  • d
    • D1
      • D1
        • D1doc1.txt
        • D1doc2.otherext
        • 的Readme.txt
    • D2
      • D2
        • D2doc1.txt
        • othertext.txt

所以当我使用时:

from("file://D/D1/?noop=true&recursive=true").to(.....)

它最终做了我想发送目录的内容。 真的没有更清洁的方法吗?如果不是,背后的原因是什么?

2 个答案:

答案 0 :(得分:2)

使用递归告诉Camel沿着子目录移动。并且您可以使用最小/最大深度选项来控制您的下降距离。

这是干净解决方案,使用正确的选项来实现它们的目的。

例如在unix上,find命令也有minx / max深度选项及其在Camel文件组件中的类似概念。

更多详情请见:http://camel.apache.org/file2

如果您不想构建在'另一方面构建的目录'您可以使用flattern选项。

答案 1 :(得分:0)

这是一个有点老的话题,但我相信它将对某人有所帮助

from("file:D:\\INPUTFOLDER?noop=false&recursive=true&maxDepth=NUMBEROFSUBDIR").process(new MyProcessor()).to("file:D:\\OUTPUTFOLDER");
  

在这里NUMBEROFSUBDIR ..将是主+1   目录(INPUTFOLDER),除非您有,否则它将不会复制文件夹   文件,因为它支持FTP。