如何使用 XZ 添加 ZipEntry for Java
How to add ZipEntry using XZ for Java
我正在使用标准 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 (https://tukaani.org/xz/java.html)
的 XZ
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 文件(尽管文件名只是数据类型“json DataList”减去“.json”扩展名)
如何指定内容的文件名?
XZOutputStream 似乎没有办法添加 ZipEntry。
xz
不是 7z
。 7z
是一种压缩归档格式,这意味着它可以包含多个文件以及一个目录结构。 xz
是单文件压缩格式。它可以与未压缩的 tar 存档格式结合使用,以制作不同的压缩存档格式,.tar.xz
.
感谢蜘蛛鲍里斯和马克阿德勒让我走上正轨。
我能够使用 org.apache.commons.compress.archivers.sevenz 包
将一个条目添加到 7z 存档中
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();
我正在使用标准 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 (https://tukaani.org/xz/java.html)
的 XZObjectMapper 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 文件(尽管文件名只是数据类型“json DataList”减去“.json”扩展名)
如何指定内容的文件名? XZOutputStream 似乎没有办法添加 ZipEntry。
xz
不是 7z
。 7z
是一种压缩归档格式,这意味着它可以包含多个文件以及一个目录结构。 xz
是单文件压缩格式。它可以与未压缩的 tar 存档格式结合使用,以制作不同的压缩存档格式,.tar.xz
.
感谢蜘蛛鲍里斯和马克阿德勒让我走上正轨。
我能够使用 org.apache.commons.compress.archivers.sevenz 包
将一个条目添加到 7z 存档中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();