Java Camel Zipplet-如何获取解压缩文件的文件内容?

Java Camel Zipplet-如何获取解压缩文件的文件内容?,java,apache-camel,camel-zipfile,Java,Apache Camel,Camel Zipfile,在上传到S3之前,我正在计算每个文件的MD5。当我使用ZipSplitt时,我想分别计算每个解压缩文件的MD5Exchange.getIn()提供整个zip文件,而不是单个解压缩文件 from(source).choice().when(isZipFile) .split(new ZipSplitter()) .streaming() .process(md5HeadersProcessor)

在上传到S3之前,我正在计算每个文件的MD5。当我使用ZipSplitt时,我想分别计算每个解压缩文件的MD5
Exchange.getIn()
提供整个zip文件,而不是单个解压缩文件

from(source).choice().when(isZipFile)
                .split(new ZipSplitter())
                .streaming()
                .process(md5HeadersProcessor)
                .process(camelS3HeadersProcessor)
                .to(destination)
                .log("Uploading file ${file:name} completed...")
                .end()
                .endChoice()
MD5HeadersProcessor:

@Override
public void process(Exchange exchange) throws NoSuchAlgorithmException {
    byte[] bytes = exchange.getIn().getBody(byte[].class);
    exchange.getIn().setHeader(S3Constants.CONTENT_MD5, getMD5(bytes));
}
@Override
public void process(Exchange exchange) throws Exception {
    SimpleBuilder simpleBuilder = new SimpleBuilder("${file:onlyname}");
    String fileName = simpleBuilder.evaluate(exchange, String.class);
     exchange.getIn().setHeader(S3Constants.KEY, fileName);
}
CamelS3HeadersProcessor:

@Override
public void process(Exchange exchange) throws NoSuchAlgorithmException {
    byte[] bytes = exchange.getIn().getBody(byte[].class);
    exchange.getIn().setHeader(S3Constants.CONTENT_MD5, getMD5(bytes));
}
@Override
public void process(Exchange exchange) throws Exception {
    SimpleBuilder simpleBuilder = new SimpleBuilder("${file:onlyname}");
    String fileName = simpleBuilder.evaluate(exchange, String.class);
     exchange.getIn().setHeader(S3Constants.KEY, fileName);
}

我可以在
CamelS3HeadersProcessor
中设置解压后的文件名。如何在
MD5HeadersProcessor
中获取解压缩文件的内容?

在我将其从
ZipSplitt
更改为
ZipFileDataFormat
迭代器后,它的工作情况如何

ZipFileDataFormat zf = new ZipFileDataFormat();
zf.setUsingIterator(true);

from(source).choice().when(isZipFile)
            .unmarshal(zf)
            .split(bodyAs(Iterator.class))
            .streaming()
            .convertBodyTo(String.class)
            .process(md5HeadersProcessor)
            .process(camelS3HeadersProcessor)
            .to(destination)
            .log("Uploading file ${file:name} completed...")
            .end()
            .endChoice()