【问题标题】:Using LZ4 Compression in Java for multiple files在 Java 中对多个文件使用 LZ4 压缩
【发布时间】: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);
    }
}

【问题讨论】:

    标签: java lz4


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2015-11-28
      • 1970-01-01
      • 2016-05-01
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      • 2016-03-31
      相关资源
      最近更新 更多