1

我已经使用 java 制作了 zip 文件。因此,我遇到了一个小问题。执行文件(*.sh 和二进制文件)被压缩不正确与他的文件权限。请为 make zip 找到以下代码

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

当我解压缩压缩文件时,执行由普通文件创建的文件。我怎么解决这个问题?

4

1 回答 1

1

据我所知,文件权限不存储在zip档案中。您可以改用tar存档。请参阅JTar或 org.apache.tools.tar。

于 2012-09-19T07:12:03.990 回答