2012-09-19 50 views
1

我使用java製作zip文件。因此,我面臨一個小問題。執行文件(*。sh和二進制文件)被壓縮不正確與他的文件權限。請找出化妝拉鍊下面的代碼Java:文件未被正確壓縮(有文件許可)

public static void makeZip(String compressDirPath, String zipName, String outputLoc) 
    throws java.io.IOException 
    { 
     if(outputLoc.equals("") || outputLoc == null) outputLoc = "."; 
     File compressDir = new File(compressDirPath); 
     ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(outputLoc+"/"+zipName)); 
     compress(compressDir, compressDir, zos); 
     zos.close(); 
     } 

    private static void compress(File compressDir, File base, ZipOutputStream zos) throws java.io.IOException 
    { 
    File[] files = compressDir.listFiles(); 
    byte[] buffer = new byte[18024]; 
    int read = 0; 
    for (int i = 0, n = files.length; i < n; i++) { 
     if (files[i].isDirectory()) { 
     compress(files[i], base, zos); 
     } else { 
     FileInputStream in = new FileInputStream(files[i]); 
     ZipEntry entry = new ZipEntry(files[i].getPath().substring(base.getPath().length() + 1)); 
     zos.putNextEntry(entry); 
     while (-1 != (read = in.read(buffer))) { zos.write(buffer, 0, read); } 
     in.close(); 
     } 
    } 
    } 

當我解壓的壓縮文件,執行文件創建正常文件。我怎麼解決這個問題?

回答

1

據我所知,文件權限不存儲在zip檔案。您可以改爲使用tar存檔。請參閱JTar或org.apache.tools.tar。

+1

並壓縮(或以其他方式壓縮)tar文件會產生更高的壓縮率。 –