首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用XZ for Java添加ZipEntry

如何使用XZ for Java添加ZipEntry
EN

Stack Overflow用户
提问于 2021-05-06 15:42:02
回答 2查看 68关注 0票数 0

我正在使用标准的ZipOutputStream压缩一些json文件

代码语言:javascript
复制
ObjectMapper objectMapper = new ObjectMapper();
try (ZipOutputStream out = new ZipOutputStream(Files.newOutputStream(outputFile + ".zip"))) {
    out.putNextEntry(new ZipEntry(jsonFileName + ".json"));
    objectMapper.writeValue(out, jsonDataList);
}

输出:

代码语言:javascript
复制
outputFile.zip\jsonFileName.json => jsonDataList contents

我想把它从.zip改为.7z或.xz,我目前正在尝试使用XZ for Java (https://tukaani.org/xz/java.html)。

代码语言:javascript
复制
ObjectMapper objectMapper = new ObjectMapper();
try (XZOutputStream out = new XZOutputStream(Files.newOutputStream(outputFile + ".xz"), new LZMA2Options())) {
    objectMapper.writeValue(out, jsonDataList);
    out.finish();
}

输出:

代码语言:javascript
复制
outputFile.xz\DataTypeOfJsonDataList => jsonDataList contents

它的工作原理是没有错误,创建了一个.xz文件,并且它确实包含一个.json文件(尽管文件名只是"jsonDataList“减去".json”扩展名的数据类型)

如何指定内容的文件名?XZOutputStream似乎没有办法添加ZipEntry。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-07 07:53:10

xz不是7z7z是一种压缩的存档格式,这意味着它可以包含多个文件以及一个目录结构。xz是单文件压缩格式。它可以与未压缩的tar归档格式结合使用,以生成不同的压缩归档格式.tar.xz

票数 1
EN

Stack Overflow用户

发布于 2021-05-18 08:40:21

感谢蜘蛛鲍里斯和马克·阿德勒,让我走上了正确的道路。

我能够使用org.apache.commons.compress.archivers.sevenz包将条目添加到7z归档中

代码语言:javascript
复制
SevenZOutputFile sevenZOutput = new SevenZOutputFile(outputFile + ".7z");
SevenZArchiveEntry entry = sevenZOutput.createArchiveEntry(jsonFile, jsonFileName + ".json");
sevenZOutput.putArchiveEntry(entry);
sevenZOutput.write(objectMapper.writeValueAsBytes(data));
sevenZOutput.closeArchiveEntry();
sevenZOutput.close();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67413796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档