我在Java中尝试xz压缩。使用xz 1.5压缩库,commons io 2.4库和commons压缩1.8.1库。我试着运行下面的代码,这给了我非常不一致的结果。文本超过70%,音频和视频文件低于0.1%(1压缩/原始* 100)。我在每次压缩之前都在使用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();
}
}
答案 0 :(得分:3)
你所看到的完全是预料之中的。仅当数据具有可以检测和利用的冗余时,才能压缩数据。音频和视频文件已经过压缩。它们没有冗余可供xz利用。文本文件中有大量冗余可供使用。