java实现Zip压缩

简介: java实现Zip压缩
1. 
import java.io.File;
2. import java.io.FileInputStream;
3. import java.io.FileNotFoundException;
4. import java.io.FileOutputStream;
5. import java.io.IOException;
6. import java.io.InputStream;
7. 
8. import org.apache.tools.zip.ZipEntry;
9. import org.apache.tools.zip.ZipOutputStream;
10. 
11. 
12. public class ZipDemo3
13. {
14.   public static void main(String [] args)
15.   {
16.     File dir = new File("F:"+File.separator+"皓皓的生日礼物");
17.     File zip = new File("F:"+File.separator+"皓皓的生日礼物.zip");
18.     ZipOutputStream zo = null;
19.     try {
20.       zo = new ZipOutputStream(new FileOutputStream(zip));
21.     } catch (FileNotFoundException e) {
22.       e.printStackTrace();
23.     }
24. 
25.     zipFile(dir,zo,"");
26. 
27.     if(zo!=null)
28.     {
29.         try {
30.           zo.close();
31.         } catch (IOException e) {
32.           e.printStackTrace();
33.         } 
34.     }
35.   }
36. 
37.   private static void zipFile(File dir, ZipOutputStream zo,String base)
38.   {
39. 
40. 
41.     try {
42. 
43.       zo.setEncoding("GBK");//防止中文乱码现象的出现
44.       zo.setComment("压缩文件夹Demo");
45. 
46.       boolean firstDir = false;
47.       if(dir.isDirectory())
48.       {
49.            firstDir = true;
50.            File [] subFiles = dir.listFiles();
51. 
52.            zo.putNextEntry(new ZipEntry(base+"/"));
53.            base = base.length() == 0 ? "" : base + "/";
54.            for (File file :subFiles) 
55.            {
56.            zipFile(file,zo,base+file.getName());    
57.            }
58.       }else
59.       {
60.         InputStream is = new FileInputStream(dir);
61.          System.out.println(base);
62.          if( !firstDir )
63.          {
64.            zo.putNextEntry(new ZipEntry(dir.getName()));
65.          }else
66.         zo.putNextEntry(new ZipEntry(base));
67. 
68.         int len = 0;
69.         byte [] buf = new byte[BUF];
70.         while((len = is.read(buf))!=-1)
71.         {
72.           zo.write(buf, 0, len);
73.         }
74.         zo.flush();
75. 
76.         if(is!=null)
77.         {
78.             is.close(); 
79.         }
80. 
81.       }
82. 
83. 
84. 
85.     } catch (FileNotFoundException e) {
86.       e.printStackTrace();
87.     } catch (IOException e) {
88.       e.printStackTrace();
89.     }
90. 
91. 
92. 
93.   }
94. public static int BUF = 1024*10;
95. 
96. }


相关文章
|
2月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
101 4
|
3月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
101 5
|
4月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
137 2
|
4月前
|
算法 Java
Java 压缩文件
在Java中压缩文件是一个常见的需求,通常可以通过使用Java自带的`java.util.zip`包来实现。这个包提供了`ZipOutputStream`类来创建ZIP格式的压缩文件。以下是一个简单的示例,展示了如何将多个文件压缩到一个ZIP文件中。 ### 示例:将多个文件压缩到一个ZIP文件中 ```java import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class ZipFilesExample { public static vo
|
5月前
|
Java 大数据 测试技术
Java对象头压缩---- 永久为Java应用“降本增效”
本文介绍了一下OpenJDK的最新技术,对象头压缩,来大幅优化Java对象的内存占用。
|
5月前
|
Java
Java SpringBoot 7z 压缩、解压
Java SpringBoot 7z 压缩、解压
84 1
|
6月前
|
Java 运维
开发与运维技术问题之ava对象头压缩技术支持所有的Java垃圾回收器如何解决
开发与运维技术问题之ava对象头压缩技术支持所有的Java垃圾回收器如何解决
47 1
|
5月前
|
存储 安全 算法
Java中防止压缩炸弹的技术分享
【8月更文挑战第17天】在软件开发和数据处理的日常工作中,我们经常会遇到各种压缩文件。然而,一种被称为“压缩炸弹”的恶意文件却给开发者带来了不小的困扰。压缩炸弹通过特殊设计的压缩算法,使得极小的文件在解压后能膨胀到异常巨大的体积,从而消耗大量系统资源甚至导致系统崩溃。本文将围绕“如何在Java中防止压缩炸弹”这一主题,分享一些实用的技术干货。
171 0
|
6月前
|
算法 Java
Java面试题:解释垃圾回收中的标记-清除、复制、标记-压缩算法的工作原理
Java面试题:解释垃圾回收中的标记-清除、复制、标记-压缩算法的工作原理
77 1
|
6月前
|
算法 Java 程序员
Java面试题:解释Java的垃圾回收机制,包括常见的垃圾回收算法。介绍一下Java的垃圾回收算法中的标记-压缩算法。
Java面试题:解释Java的垃圾回收机制,包括常见的垃圾回收算法。介绍一下Java的垃圾回收算法中的标记-压缩算法。
58 0