我有以下文件夹层次结构:
使用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更改为先前的层次结构:
所以当我使用时:
from("file://D/D1/?noop=true&recursive=true").to(.....)
它最终做了我想发送目录的内容。 真的没有更清洁的方法吗?如果不是,背后的原因是什么?
答案 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。