我想把一个zip文件解压到一个叫做like the zip file的文件夹中。例如:原件/abc。zip应解压缩以导入/abc/
我现在所做的就是解压缩指定文件夹中的文件。
from("file:" + "</path/to/original>" + "?noop=true").noAutoStartup().routeId("xxx").split(new ZipSplitter()).streaming()
.convertBodyTo(String.class).to("file:" + "</path/to/import>");
如何从“from”文件中获取文件名并将其放入“to”部分?
我是骆驼的新手,所以任何帮助都将不胜感激。谢谢!
为了将文件路径从生产者复制到消费者,可以使用文件语言。
差不多
from("file:" + "</path/to/original>" + "?noop=true").noAutoStartup().routeId("xxx").split(new ZipSplitter()).streaming()
.convertBodyTo(String.class).to("$simple{file:path}"));
(最初根据文件名进行过滤)
用于基于文件名的过滤:-您可以使用过滤器
差不多
from("file:" + "</path/to/original>" + "?noop=true").noAutoStartup().routeId("xxx").fileFilter($org.apache.camel.Exchange.FILE_NAME.contains("xyz")).split(new ZipSplitter()).streaming()
.convertBodyTo(String.class).to("file:" + "</path/to/import>");
此外,camel允许在文件名中使用regex。所以你可以用
from("file:" + "</path/to/original>" + "regex pattern in file name" + "?noop=true").noAutoStartup().routeId("xxx").split(new ZipSplitter()).streaming()
.convertBodyTo(String.class).to("file:" + "</path/to/import>");
如果您查看http://camel.apache.org/file2.html您会看到camel文件组件设置了一些标头。尝试类似的东西
from("file:" + "</path/to/original>" + "?noop=true").noAutoStartup().routeId("xxx").split(new ZipSplitter()).streaming()
.convertBodyTo(String.class).to("file:" + "</path/to/import>" + header("CamelFileNameOnly"));
此路由将zip文件的上下文从收件箱文件夹提取到发件箱文件夹,在父文件夹中,父名称是提取的zip文件的名称。我想它能满足你的所有要求。
fromF("file:%s?noop=true","inbox")
.split(new ZipSplitter())
.streaming()
.toD("file:{{my.outbox}}/${file:onlyname.noext}/");
注意:
>
你不需要. vertBodyTo(String.class)
对于制作人,我使用了toD,它从属性中取出outbox文件夹。详见此处https://camel.apache.org/properties.html。您可以在resources文件夹中添加一个属性文件(src/main/resources,用于maven项目),然后像这样(在java dsl routebuilder中)在camel中加载它们
PropertiesComponent pc=new PropertiesComponent();pc.setLocation(“classpath:application.properties”);getContext()。addComponent(“属性
”,pc)
最后是最重要的,你必须利用文件语言,并使用file: onlyname: noext.来获取没有扩展名的原始zip文件名。在你的情况下abc.这里的详细信息:https://camel.apache.org/file-language.html
问题内容: 我尝试解压缩150个zip文件。所有zip文件都使用不同的名称,它们都分散在一个大文件夹中,该文件夹分为许多子文件夹和子子文件夹。我想将每个存档提取到与原始zip文件名相同名称的单独文件夹中,与原始zip文件位于同一位置。我的代码是: 我运行代码后,什么都没有发生。在此先感谢您的任何帮助。 问题答案: 更新: 最后,这段代码对我有用:
问题内容: 尝试使用Apache Camel解压缩文件时,我尝试了http://camel.apache.org/zip-file- dataformat.html中 给出的示例,但找不到 UnZippedMessageProcessor 类。这是代码: 是否有人尝试这样做或通过骆驼路线将文件解压缩? 先感谢您! 问题答案: 您也可以像这样定义路由,可以在camel-zipfile中找到 ZipS
我使用filter和sortBy的想法失败了,因为它不能一次轮询所有文件。 也许这不是Camel需要解决的问题,但由于它已经知道如何通过SFTP连接和删除文件,所以我想重用它的功能。
首先,我没有看到任何其他问题可以“直接”帮助我解决问题,这就是为什么我决定创建一个新的问题。 以下代码被编程为解压缩多个文件和文件夹。 这段代码工作正常,但有一个重要的错误:它解压缩文件夹,但不是像这样显示它们: 文件1。txt 它显示了这一点: file1.txt file2.txt file3.txt file4.txt file5.txt file6.txt 我做错了什么?
这是我的全部剧本。除了最后2行之外,所有的内容都用于查找压缩的PDF文件并移动它们。 在第一部分中,脚本检查文件夹中每个pdf文件的前几个字节。如果它们以“pk*”开头,它们是zip文件,并被移动到zipped文件夹中。对于每个PDF/ZIP文件,在它旁边的文件夹中有一个关联的HL7文件。 这些也需要移动到同一个文件夹。从那里,zip文件需要解压缩并重新定位到“unzipped” 所以我需要找到一
问题内容: 我正在尝试压缩包含子文件夹的文件夹。尝试压缩名为10-18-2010_4D的文件夹。以上程序以以下异常结束。请提供有关如何解决此问题的建议。 问题答案: 您需要检查文件是否为目录,因为您无法将目录传递给zip方法。 看一下该页面,该页面显示了如何递归压缩给定目录。