Архивирование подкаталогов - это сжатие только содержимого подкаталогов, но не подкаталогов. - PullRequest
1 голос
/ 11 июля 2019

Ниже приведен код, который я пробовал.это архивирование только содержимого подпапки, но не папки, в которой мне нужно архивировать все подпапки вместе с содержимым.что я тут делаю не такПример: у меня есть папка 'demo' внутри демонстрационной папки, у меня есть папки a, b, c.Я хочу заархивировать a, b, c вместе с содержимым, и zip не должен включать родительский элемент, который является демо.

static void addDir(File dirObj, ZipOutputStream out) throws IOException {
        File[] files = dirObj.listFiles();
        byte[] tmpBuf = new byte[1024];

        for (int i = 0; i < files.length; i++) {
          if (files[i].isDirectory()) {
            addDir(files[i], out);
            continue;
          }
          FileInputStream in = new FileInputStream(files[i].getAbsolutePath());
          System.out.println(" Adding: " + files[i].getName());
          out.putNextEntry(new ZipEntry(files[i].getName()));
          int len;
          while ((len = in.read(tmpBuf)) > 0) {
            out.write(tmpBuf, 0, len);
          }
          out.closeEntry();
          in.close();
        }
      }

    public static void zipFiles(File[] subd) {

        String zipFile = "test.zip";

        try {

            FileOutputStream fos = new FileOutputStream(zipFile);

            ZipOutputStream zos = new ZipOutputStream(fos);

            for (File dir : subd) {

                addDir(dir, zos);

            }

            // close the ZipOutputStream
            zos.close();

        } catch (IOException ioe) {
            System.out.println("Error creating zip file: " + ioe);
        }
...