如何在Java中使用xz压缩时获得统一的压缩



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

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利用。文本文件中有大量的冗余可供利用。

最新更新