0

我正在使用一个使用 plexus-archiver 的 maven 插件来创建一个 zip 文件。基本上,我得到了 Sisu 注入的组件,然后我遍历指定的文件集并注册所需的文件集:

zipArchiver.addFile(from_file, to_file);

并且 zip 正在正确生成。

但我需要在添加到 zip 的一些文件中包含文件 mime 类型的额外字段。

我怎么能用 plexus-archiver 做到这一点?

4

1 回答 1

0

当前的 plexus-archiver (3.0) 似乎不支持额外字段。为了继续使用 plexus-archive,我必须进行一些修改。

解决方案是扩展 ZipArchiver 类并覆盖方法initZipOutputStream ,该方法提供来自 ZipArchiveOutputStream 类的对象。

有了它,我可以创建条目及其额外字段:

@Override
protected void initZipOutputStream(ZipArchiveOutputStream pZOut)
        throws ArchiverException, IOException {
    super.initZipOutputStream(pZOut);

ZipArchiveEntry ae = new ZipArchiveEntry(pFile,
            pFile.getName());
ZipExtraField zef = new ContentTypeExtraField(
            Constants.MIME_STRING);
    ae.addExtraField(zef);
    pZOut.putArchiveEntry(ae);
    pZOut.write(content);
    pZOut.closeArchiveEntry();
}
于 2015-10-10T05:07:21.960 回答