在 Java 中对多个文件使用 LZ4 压缩
Posted
技术标签:
【中文标题】在 Java 中对多个文件使用 LZ4 压缩【英文标题】:Using LZ4 Compression in Java for multiple files 【发布时间】:2020-10-26 19:58:18 【问题描述】:我正在尝试将多个文件压缩到一个存档中,但使用我当前的代码,它只会将其压缩到 zip 中的单个 blob 中。有谁知道如何用 LZ4 分割文件?
public void zipFile(File[] fileToZip, String outputFileName, boolean activeZip)
try (FileOutputStream fos = new FileOutputStream(new File(outputFileName), true);
LZ4FrameOutputStream lz4fos = new LZ4FrameOutputStream(fos);)
for (File a : fileToZip)
try (FileInputStream fis = new FileInputStream(a))
byte[] buf = new byte[bufferSizeZip];
int length;
while ((length = fis.read(buf)) > 0)
lz4fos.write(buf, 0, length);
catch (Exception e)
LOG.error("Zipping file failed ", e);
【问题讨论】:
【参考方案1】:LZ4
算法与LZMA
接近。如果您可以使用LZMA
,那么您可以使用LZMA
压缩创建zip
存档。
List<Path> files = Collections.emptyList();
Path zip = Paths.get("lzma.zip");
ZipEntrySettings entrySettings = ZipEntrySettings.builder()
.compression(Compression.LZMA, CompressionLevel.NORMAL)
.lzmaEosMarker(true).build();
ZipSettings settings = ZipSettings.builder().entrySettingsProvider(fileName -> entrySettings).build();
ZipIt.zip(zip)
.settings(settings)
.add(files);
详情见zip4jvm
【讨论】:
以上是关于在 Java 中对多个文件使用 LZ4 压缩的主要内容,如果未能解决你的问题,请参考以下文章