程序实现了ZIP压缩。共分为2部分 : 压缩(compression)与解压(decompression)

大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。 需在代码中自定义源输入路径和目标输出路径。

1.    package com.han;
2.
3. import java.io.*;
4. import java.util.zip.*;
5.
6. /**
7. * 程序实现了ZIP压缩。共分为2部分 : 压缩(compression)与解压(decompression)
8. * <p>
9. * 大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。 需在代码中自定义源输入路径和目标输出路径。
10. * <p>
11. * 在本段代码中,实现的是压缩部分;解压部分见本包中Decompression部分。
12. *
13. * @author HAN
14. *
15. */
16.
17. public class MyZipCompressing {
18. private int k = 1; // 定义递归次数变量
19.
20. public MyZipCompressing() {
21. // TODO Auto-generated constructor stub
22. }
23.
24. /**
25. * @param args
26. */
27. public static void main(String[] args) {
28. // TODO Auto-generated method stub
29. MyZipCompressing book = new MyZipCompressing();
30. try {
31. book.zip("C:\\Users\\Gaowen\\Desktop\\ZipTestCompressing.zip",
32. new File("C:\\Users\\Gaowen\\Documents\\Tencent Files"));
33. } catch (Exception e) {
34. // TODO Auto-generated catch block
35. e.printStackTrace();
36. }
37.
38. }
39.
40. private void zip(String zipFileName, File inputFile) throws Exception {
41. System.out.println("压缩中...");
42. ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
43. zipFileName));
44. BufferedOutputStream bo = new BufferedOutputStream(out);
45. zip(out, inputFile, inputFile.getName(), bo);
46. bo.close();
47. out.close(); // 输出流关闭
48. System.out.println("压缩完成");
49. }
50.
51. private void zip(ZipOutputStream out, File f, String base,
52. BufferedOutputStream bo) throws Exception { // 方法重载
53. if (f.isDirectory()) {
54. File[] fl = f.listFiles();
55. if (fl.length == 0) {
56. out.putNextEntry(new ZipEntry(base + "/")); // 创建zip压缩进入点base
57. System.out.println(base + "/");
58. }
59. for (int i = 0; i < fl.length; i++) {
60. zip(out, fl[i], base + "/" + fl[i].getName(), bo); // 递归遍历子文件夹
61. }
62. System.out.println("第" + k + "次递归");
63. k++;
64. } else {
65. out.putNextEntry(new ZipEntry(base)); // 创建zip压缩进入点base
66. System.out.println(base);
67. FileInputStream in = new FileInputStream(f);
68. BufferedInputStream bi = new BufferedInputStream(in);
69. int b;
70. while ((b = bi.read()) != -1) {
71. bo.write(b); // 将字节流写入当前zip目录
72. }
73. bi.close();
74. in.close(); // 输入流关闭
75. }
76. }
77. }
1.    package com.han;
2.
3. import java.io.*;
4. import java.util.zip.*;
5. /**
6. * 程序实现了ZIP压缩。共分为2部分 :
7. * 压缩(compression)与解压(decompression)
8. * <p>
9. * 大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。
10. * 需在代码中自定义源输入路径和目标输出路径。
11. * <p>
12. * 在本段代码中,实现的是解压部分;压缩部分见本包中compression部分。
13. * @author HAN
14. *
15. */
16. public class CopyOfMyzipDecompressing {
17.
18. public static void main(String[] args) {
19. // TODO Auto-generated method stub
20. long startTime=System.currentTimeMillis();
21. try {
22. ZipInputStream Zin=new ZipInputStream(new FileInputStream(
23. "C:\\Users\\HAN\\Desktop\\stock\\SpectreCompressed.zip"));//输入源zip路径
24. BufferedInputStream Bin=new BufferedInputStream(Zin);
25. String Parent="C:\\Users\\HAN\\Desktop"; //输出路径(文件夹目录)
26. File Fout=null;
27. ZipEntry entry;
28. try {
29. while((entry = Zin.getNextEntry())!=null && !entry.isDirectory()){
30. Fout=new File(Parent,entry.getName());
31. if(!Fout.exists()){
32. (new File(Fout.getParent())).mkdirs();
33. }
34. FileOutputStream out=new FileOutputStream(Fout);
35. BufferedOutputStream Bout=new BufferedOutputStream(out);
36. int b;
37. while((b=Bin.read())!=-1){
38. Bout.write(b);
39. }
40. Bout.close();
41. out.close();
42. System.out.println(Fout+"解压成功");
43. }
44. Bin.close();
45. Zin.close();
46. } catch (IOException e) {
47. // TODO Auto-generated catch block
48. e.printStackTrace();
49. }
50. } catch (FileNotFoundException e) {
51. // TODO Auto-generated catch block
52. e.printStackTrace();
53. }
54. long endTime=System.currentTimeMillis();
55. System.out.println("耗费时间: "+(endTime-startTime)+" ms");
56. }
57.
58. }

java实现 zip解压缩的更多相关文章

  1. Java压缩技术(三) ZIP解压缩——Java原生实现

    原文:http://snowolf.iteye.com/blog/642492 JavaEye的朋友跟我说:“你一口气把ZIP压缩和解压缩都写到一个帖子里,我看起来很累,不如分开好阅读”.ok,面向读 ...

  2. 利用Java进行zip文件压缩与解压缩

    摘自: https://www.cnblogs.com/alphajuns/p/12442315.html 工具类: package com.alphajuns.util; import java.i ...

  3. [Java 基础] 使用java.util.zip包压缩和解压缩文件

    reference :  http://www.open-open.com/lib/view/open1381641653833.html Java API中的import java.util.zip ...

  4. Java操作zip压缩和解压缩文件工具类

    需要用到ant.jar(这里使用的是ant-1.6.5.jar) import java.io.File; import java.io.FileInputStream; import java.io ...

  5. java.util.zip压缩打包文件总结二: ZIP解压技术

    一.简述 解压技术和压缩技术正好相反,解压技术要用到的类:由ZipInputStream通过read方法对数据解压,同时需要通过CheckedInputStream设置冗余校验码,如: Checked ...

  6. Android中的Zip解压缩

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import ...

  7. java.util.zip.Deflater 压缩 inflater解压 实例

    原文:java压缩解压缩类实例[转] package com.example.helloworld; import java.io.ByteArrayOutputStream; import java ...

  8. Java用ZIP格式压缩和解压缩文件

    转载:java jdk实例宝典 感觉讲的非常好就转载在这保存! java.util.zip包实现了Zip格式相关的类库,使用格式zip格式压缩和解压缩文件的时候,须要导入该包. 使用zipoutput ...

  9. android zip解压缩

    android  zip解压缩 public class ZipUtils { public ZipUtils() { } /* 以输入流的形式解压 */ public static void UnZ ...

随机推荐

  1. 轮播图jq版

    轮播图的需求 1:图片自己轮播,并且下面的tabs小图标跟着显示 2.鼠标hover到tabs上面显示对应的图片 3.点击左右按钮,显示下一张图片. <div id="oLunbo&q ...

  2. C#表格文字多收缩样式

    C#表格文字多收缩样式 <style> .divOpen { height: 24px; overflow: hidden; } </style> -------------- ...

  3. php删除服务器所有session踢掉所有在线用户linux

    注意:如果要删除服务器上所有session,重启php服务是解决不了问题的,php的session是持久化的. 有效解决办法: 删除 /tmp 下的所有文件(默认php的session文件是在/tmp ...

  4. promise之nodejsQ的详细用法总结

    这里主要讲node.js中Q的各种用法及说明总结,不详细介绍promise及原理.关于promise介绍可以查看我的另一篇文章: https://www.cnblogs.com/yzeng/p/976 ...

  5. 粗看ES6之函数

    标签: es6 javascript 箭头函数 ES6为了书写方便引入了函数的全新简写方式-箭头函数 <!DOCTYPE html> <html> <head> & ...

  6. 多个ModelForm组合成一个表单

    打个比方: 我将用户的基本信息 如用户名密码存在继承了Django auth认证组件中的 AbstractUser 类的模型中,并和第二个存了Details模型中,此模型继承UserInfo模型 继承 ...

  7. ActiveMQ实例1--简单的发送和接收消息

    一.环境准备 1,官网http://activemq.apache.org/下载最新版本的ActiveMQ,并解压 2,打开对应的目录,在Mac环境下,一般可以运行命令: cd /Users/***/ ...

  8. libmysqlclient.so.16未找到方法

    用mysql命令登录的时候报错: [root@iZ www]# mysql -uroot -p mysql: error while loading shared libraries: libmysq ...

  9. zookeeper的几种使用场景

    1.数据的发布与订阅 通过发布与订阅实现配置的信息的统一管理,主要采用zk节点可以存储数据的特性,我们可以将一些配置信息存放到某一节点上,订阅这个节点的服务就可以动态的获取这个节点的数据.在应用启动的 ...

  10. VtigerCRM-6.4.0-zh_CN (OpenLogic CentOS 7.2)

    平台: CentOS 类型: 虚拟机镜像 软件包: vtigercrm6.4.0 commercial crm mysql open source php vtiger 简体中文版 服务优惠价: 按服 ...