Exemplo n.º 1
0
 /**
  * 压缩文件或目录
  *
  * @param srcDirName 压缩的根目录
  * @param fileName 根目录下的待压缩的文件名或文件夹名,其中*或""表示跟目录下的全部文件
  * @param descFileName 目标zip文件
  */
 public static void zipFiles(String srcDirName, String fileName, String descFileName) {
   // 判断目录是否存在
   if (srcDirName == null) {
     log.debug("文件压缩失败,目录 " + srcDirName + " 不存在!");
     return;
   }
   File fileDir = new File(srcDirName);
   if (!fileDir.exists() || !fileDir.isDirectory()) {
     log.debug("文件压缩失败,目录 " + srcDirName + " 不存在!");
     return;
   }
   String dirPath = fileDir.getAbsolutePath();
   File descFile = new File(descFileName);
   try {
     ZipOutputStream zouts = new ZipOutputStream(new FileOutputStream(descFile));
     if ("*".equals(fileName) || "".equals(fileName)) {
       FileUtils.zipDirectoryToZipFile(dirPath, fileDir, zouts);
     } else {
       File file = new File(fileDir, fileName);
       if (file.isFile()) {
         FileUtils.zipFilesToZipFile(dirPath, file, zouts);
       } else {
         FileUtils.zipDirectoryToZipFile(dirPath, file, zouts);
       }
     }
     zouts.close();
     log.debug(descFileName + " 文件压缩成功!");
   } catch (Exception e) {
     log.debug("文件压缩失败:" + e.getMessage());
     e.printStackTrace();
   }
 }
Exemplo n.º 2
0
  /**
   * 将目录压缩到ZIP输出流
   *
   * @param dirPath 目录路径
   * @param fileDir 文件信息
   * @param zouts 输出流
   */
  public static void zipDirectoryToZipFile(String dirPath, File fileDir, ZipOutputStream zouts) {
    if (fileDir.isDirectory()) {
      File[] files = fileDir.listFiles();
      // 空的文件夹
      if (files.length == 0) {
        // 目录信息
        ZipEntry entry = new ZipEntry(getEntryName(dirPath, fileDir));
        try {
          zouts.putNextEntry(entry);
          zouts.closeEntry();
        } catch (Exception e) {
          e.printStackTrace();
        }
        return;
      }

      for (File file : files) {
        if (file.isFile()) {
          // 如果是文件,则调用文件压缩方法
          FileUtils.zipFilesToZipFile(dirPath, file, zouts);
        } else {
          // 如果是目录,则递归调用
          FileUtils.zipDirectoryToZipFile(dirPath, file, zouts);
        }
      }
    }
  }