Apache Camel 压缩包

Posted

技术标签:

【中文标题】Apache Camel 压缩包【英文标题】:Apache Camel zip folder 【发布时间】:2015-04-23 20:07:36 【问题描述】:

我正在尝试使用 Camel 压缩文件夹。我有一个Processor,它创建了包含文件的文件夹:

public class CreateDirProcessor implements Processor 

    public void process(Exchange exchange) throws Exception 

        Message in = exchange.getIn();

        File d = new File("myDir/hi");

        d.mkdirs();

        File f = new File(d, "hello.txt");

        f.createNewFile();

        in.setBody(f);
    


它工作正常。

在我的路线中,我尝试压缩 hi 文件夹,所以我这样做了:

public static void main(String[] args) throws Exception 
    CamelContext context = new DefaultCamelContext();

    ProducerTemplate template = context.createProducerTemplate();

    context.addRoutes(new RouteBuilder() 
        public void configure() 
            from("direct:source")
            .process(new CreateDirProcessor())
            .marshal().zipFile().to("file:zipped");
        
    );

    context.start();

    template.sendBody("direct:source", "test");

    Thread.sleep(3000);

    context.stop();


那是行不通的。我得到了:

TypeConversionException: Error during type conversion from type: java.io.File to the required type... `myDir/hi` is a directory

目录不是文件吗?不能用 Camel 压缩整个文件夹及其内容吗?

谢谢大家。

【问题讨论】:

【参考方案1】:

警告 - 我不是 Camel 方面的专家 - 但我可以为您提供一些指导。

至少在 Java 中,当您使用压缩多个文件时,您会将每个文件添加为 zip 文件中的“zip 条目”。这是example。因此,不,您永远不会直接压缩目录 - 虽然目录是文件,但文件仅包含指向其他文件的指针,因此压缩目录“文件”不会获得所需的结果。

现在是第二个问题 - 我看到此链接确实将多个文件压缩为一个。检查此link。请注意使用通配符 (*.txt) 来引用要压缩的文件,而不是使用目录。希望这会有所帮助。

【讨论】:

谢谢,我会检查一下。

以上是关于Apache Camel 压缩包的主要内容,如果未能解决你的问题,请参考以下文章

Apache网页优化:网页压缩,网页缓存(内含源码包与抓包工具)

Apache Hadoop压缩包与Eclipse结合,导入jar包归整总结

Mybatis入门(附源码压缩包下载)

Linux系统中Apache服务的构建

java如何读取压缩包中的文本文件

Android 解压中文乱码(压缩包内中文乱码)