JAVA导出zip文件

597 阅读1分钟

这是我参与8月更文挑战的第2天,活动详情查看:8月更文挑战

1、工具类

public static void zipFiles(File[] srcFiles, File zipFile) {
   // 判断压缩后的文件存在不,不存在则创建
   if (!zipFile.exists()) {
      try {
         zipFile.createNewFile();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
   // 创建 FileOutputStream 对象
   FileOutputStream fileOutputStream = null;
   // 创建 ZipOutputStream
   ZipOutputStream zipOutputStream = null;
   // 创建 FileInputStream 对象
   FileInputStream fileInputStream = null;

   try {
      // 实例化 FileOutputStream 对象
      fileOutputStream = new FileOutputStream(zipFile);
      // 实例化 ZipOutputStream 对象
      zipOutputStream = new ZipOutputStream(fileOutputStream);
      // 创建 ZipEntry 对象
      ZipEntry zipEntry = null;
      // 遍历源文件数组
      for (int i = 0; i < srcFiles.length; i++) {
         // 将源文件数组中的当前文件读入 FileInputStream 流中
         fileInputStream = new FileInputStream(srcFiles[i]);
         // 实例化 ZipEntry 对象,源文件数组中的当前文件
         zipEntry = new ZipEntry(srcFiles[i].getName());
         zipOutputStream.putNextEntry(zipEntry);
         // 该变量记录每次真正读的字节个数
         int len;
         // 定义每次读取的字节数组
         byte[] buffer = new byte[1024];
         while ((len = fileInputStream.read(buffer)) > 0) {
            zipOutputStream.write(buffer, 0, len);
         }
      }
      zipOutputStream.closeEntry();
      zipOutputStream.close();
      fileInputStream.close();
      fileOutputStream.close();
   } catch (IOException e) {
      e.printStackTrace();
   }

}

2、引用

listFile是文件包含文件的集合

List<File> listFile = new ArrayList<File>();
File file = new File("C:/Users/Administrator/Desktop/doc", "信息").doc");
listFile.add(file);
File[] srcFiles = listFile.toArray(new File[listFile.size()]);
zipFiles(srcFiles, zipFile);