java - 如何在 Java 中使用 xz 压缩时获得统一压缩?

标签 java compression tar lossless-compression xz

我正在尝试用 Java 进行 xz 压缩。使用 xz 1.5 压缩库、commons io 2.4 库和 commons compress 1.8.1 库。我尝试运行下面的代码,结果非常不一致。文本超过 70%,音频和视频文件低于 0.1%(1-压缩/原始 * 100)。我在每次压缩之前都使用制作压缩包。这应该只适用于文本文件吗?

package makexz;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.compress.compressors.CompressorOutputStream;
import org.apache.commons.compress.compressors.CompressorStreamFactory;
import org.apache.commons.compress.compressors.xz.XZCompressorOutputStream;
import org.apache.commons.compress.utils.IOUtils;

public class MakeXZ {

public static void main(String[] args) throws FileNotFoundException, IOException, Exception {

        FileOutputStream dest = new         FileOutputStream("C://TARDUMP//XZ//newvid.tar.xz");
    CompressorOutputStream cos = new     CompressorStreamFactory().createCompressorOutputStream(CompressorStreamFactory.XZ, dest);
        String input = "C://TARDUMP//newvid.tar";
        IOUtils.copy(new FileInputStream(input), cos);
        cos.close();
    }

}

最佳答案

您所看到的完全是意料之中的。只有当数据具有可以检测和利用的冗余时,才可以压缩数据。音频和视频文件已经压缩。它们中没有冗余可供 xz 利用。文本文件中有大量冗余可供利用。

关于java - 如何在 Java 中使用 xz 压缩时获得统一压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30421859/

相关文章:

java - 用于管理大型操作结果的设计模式

encryption - 如何确定 zip 文件的加密方案

java - 在 Java 中序列化和压缩对象的性能成本

java - Aspose PPT/幻灯片中的页面设置

java - 类型转换用括号括起来的原因

java - 使用 Hive UDF 解压缩列数据

bash - 从多个目录创建多个 tar.gz 存档

python - 用python解压缩tar.Z文件?

linux - 在 Solaris 报告上解压文件 - tar : directory checksum error

Java+JSP : Query String handling