2015-05-24 28 views
2

我想在Java中使用xz壓縮。使用xz 1.5壓縮庫,commons io 2.4庫和commons壓縮1.8.1庫。我試圖運行下面的代碼給我非常不一致的結果。文本超過70%,音頻和視頻文件低於0.1%(1-compressed/original * 100)。我在每次壓縮之前使用tarball。這應該只適用於文本文件?如何在Java中使用xz壓縮時獲得統一壓縮?

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(); 
    } 

} 

回答

3

你所看到的是完全可以預料的。數據只有在具有可檢測和利用的冗餘時才能被壓縮。音頻和視頻文件已經壓縮。他們沒有冗餘的xz可以利用。文本文件中有很多冗餘可以利用。