java多文件压缩成ZIP

 1      /**
 2       * 多个文件压缩
 3       * @param srcFiles   压缩前的文件
 4       * @param zipFile    压缩后的文件
 5       */
 6      public static void zipFiles(File[] srcFiles,  File zipFile) {
 7          // 判断压缩后的文件存在不,不存在则创建
 8          if (!zipFile.exists()) {
 9              try {
10                  zipFile.createNewFile();
11              } catch (IOException e) {
12                  e.printStackTrace();
13              }
14          }
15          // 创建 FileOutputStream 对象
16          FileOutputStream fileOutputStream = null;
17          // 创建 ZipOutputStream
18          ZipOutputStream zipOutputStream = null;
19          // 创建 FileInputStream 对象
20          FileInputStream fileInputStream = null;
21   
22          try {
23              // 实例化 FileOutputStream 对象
24              fileOutputStream = new  FileOutputStream(zipFile);
25              // 实例化 ZipOutputStream 对象
26              zipOutputStream = new  ZipOutputStream(fileOutputStream);
27              // 创建 ZipEntry 对象
28              ZipEntry zipEntry = null;
29              // 遍历源文件数组
30              for (int i = 0; i < srcFiles.length;  i++) {
31                  // 将源文件数组中的当前文件读入  FileInputStream 流中
32                  fileInputStream = new  FileInputStream(srcFiles[i]);
33                  // 实例化 ZipEntry 对象,源文件数组中的当前文件
34                  zipEntry = new  ZipEntry(srcFiles[i].getName());
35                   zipOutputStream.putNextEntry(zipEntry);
36                  // 该变量记录每次真正读的字节个数
37                  int len;
38                  // 定义每次读取的字节数组
39                  byte[] buffer = new byte[1024];
40                  while ((len =  fileInputStream.read(buffer)) > 0) {
41                      zipOutputStream.write(buffer, 0,  len);
42                  }
43                  fileInputStream.close();
44              }
45              zipOutputStream.closeEntry();
46              zipOutputStream.close();
47              fileOutputStream.close();
48          } catch (IOException e) {
49              e.printStackTrace();
50          }finally{
51              //压缩完成删除压缩前的文件
52              for (File file : srcFiles) {
53                 if(file.exists()){
54                     file.delete();
55                 }
56             }
57          }
58      }

 

posted @ 2020-10-28 16:01  那时·此刻  阅读(1058)  评论(1编辑  收藏  举报
/* 看板娘 */