[英]Using LZ4 Compression in Java for multiple files
我正在尝试将多个文件压缩到一个存档中,但是使用我当前的代码,它只会将其压缩到 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);
}
}
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中的详细信息
LZ4 压缩字节流。 您需要将多个文件归档到单个归档文件中,例如 Tar 归档文件,然后将其输入 LZ4 压缩器。
我创建了一个 Java 库来为您执行此操作https://github.com/spoorn/tar-lz4-java 。
如果您想自己实现它,这里有一个技术文档,其中包含有关如何使用来自 Apache Commons 的 TarArchive 和 lz4-java 的 LZ4 压缩目录的详细信息:https ://github.com/spoorn/tar-lz4-java/blob/主/SUMMARY.md#lz4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.