7

Apache Camel を使用して zip ファイルからファイル (1 つまたは複数) を抽出するにはどうすればよいですか? 出来ますか?

私はこれを試しています

from("file:/home/myinputzip?noop=true&delay=5000&moveFailed=error")
  .split(new ZipSplitter())
    .streaming().convertBodyTo(String.class)      
  .to("file:/home/myinputzip")
.end();

アプリケーションを起動すると、ファイルは zip から抽出されますが、camel は例外をスローし、ファイルはエラー フォルダーに移動されます。

エラー: org.apache.camel.processor.DefaultErrorHandler - (MessageId: ID-ubuntu-35217-1377806407437-0-5 on ExchangeId: ID-ubuntu-35217-1377806407437-0-7) の配信に失敗しました。配信試行後に使い果たされました: 1 つキャッチ: org.apache.camel.component.file.GenericFileOperationFailedException: null 本文をファイルに書き込めません: /home/myinputzip/aVIII_crrpfp201304.cap org.apache.camel.component.file.GenericFileOperationFailedException: null を書き込めません本文をファイルに: /home/myinputzip/aVIII_crrpfp201304.cap at org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:194) at org.apache.camel.component.file.GenericFileProducer.writeFile(GenericFileProducer. java:257) org.apache.camel.component.file.GenericFileProducer.processExchange(GenericFileProducer.java:159) で org.apache.camel.component.file.

誰でも私を助けることができますか?

4

2 に答える 2

4

私は次のように解決しました

from("file:/home/myinputzip?noop=true&delay=5000&moveFailed=error")
  .split(new ZipSplitter())
    .streaming().convertBodyTo(String.class) 
        .choice()
            .when(body().isNotNull())
                .to("file:/home/myinputzip")
        .end()
.end();
于 2013-08-30T20:22:49.880 に答える
0

あなたのルートが機能することに同意しますが、次のようなことを試しましたか:

from("file:/home/myinputzip?noop=true&delay=5000&moveFailed=error")
  .unmarshal().zip()
  .split(body(Iterable.class))
    .streaming().convertBodyTo(String.class)      
  .to("file:/home/myinputzip")
.end();

http://camel.465427.n5.nabble.com/zip-file-best-practices-td5713437.htmlからこの例を取り上げました

これがうまくいくことを願っています!

于 2013-08-30T14:56:32.053 に答える