【发布时间】:2021-05-06 07:42:02
【问题描述】:
我正在使用标准 ZipOutputStream 压缩一些 json 文件
ObjectMapper objectMapper = new ObjectMapper();
try (ZipOutputStream out = new ZipOutputStream(Files.newOutputStream(outputFile + ".zip"))) {
out.putNextEntry(new ZipEntry(jsonFileName + ".json"));
objectMapper.writeValue(out, jsonDataList);
}
输出:
outputFile.zip\jsonFileName.json => jsonDataList contents
我想将其从 .zip 更改为 .7z 或 .xz 我目前正在为 Java 试用 XZ (https://tukaani.org/xz/java.html)
ObjectMapper objectMapper = new ObjectMapper();
try (XZOutputStream out = new XZOutputStream(Files.newOutputStream(outputFile + ".xz"), new LZMA2Options())) {
objectMapper.writeValue(out, jsonDataList);
out.finish();
}
输出:
outputFile.xz\DataTypeOfJsonDataList => jsonDataList contents
它的工作原理是没有错误,创建一个.xz文件,它确实包含一个.json文件(虽然文件名只是“jsonDataList”的数据类型减去“.json”扩展名)
如何指定内容的文件名? XZOutputStream 似乎没有办法添加 ZipEntry。
【问题讨论】:
-
xz 不是存档格式,它是一种压缩格式。 Zip 结合了两者。如果您想要压缩存档,请先使用
tar创建存档,然后将其压缩。您可以通过将 tar 输出流包装在 xz 输出流中来实现。
标签: java compression xz