Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream)

                                               作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

  之前我已经分享过很多的Java的IO流了,和其他的IO流用法类似,我们要介绍的是压缩流,使用方法很简单。话不多说,一切尽在注释中。

一.压缩文件

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ package cn.org.yinzhengjie.compress; import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; public class Zip {
public static void main(String[] args) {
try {
testZip();
} catch (Exception e) {
e.printStackTrace();
}
} public static void testZip() throws Exception {
FileOutputStream fos = new FileOutputStream("D:\\BigData\\JavaSE\\yinzhengjieData\\yinzhengjie.zip") ;
ZipOutputStream zos= new ZipOutputStream(fos) ;
//写入一个条目,我们需要给这个条目起个名字,相当于起一个文件名称
zos.putNextEntry(new ZipEntry("yinzhengjie_entry1"));
//往这个条目中写入一定的数据
zos.write("尹正杰".getBytes());
//关闭条目
zos.closeEntry(); zos.putNextEntry(new ZipEntry("yinzhengjie_entry2"));
zos.write("BigData".getBytes());
zos.closeEntry(); zos.putNextEntry(new ZipEntry("yinzhengjie_entry3"));
zos.write("2018".getBytes());
zos.closeEntry();
zos.close();
}
}

  压缩后我们可以看到指定目录中生成了zip格式的压缩文件如下:

二.解压文件

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ package cn.org.yinzhengjie.compress; import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream; public class Unzip { public static void main(String[] args) {
try {
testUnzip();
} catch (Exception e) {
e.printStackTrace();
}
} public static void testUnzip() throws Exception {
FileInputStream fis = new FileInputStream("D:\\BigData\\JavaSE\\yinzhengjieData\\yinzhengjie.zip");
ZipInputStream zis = new ZipInputStream(fis);
ZipEntry entry = null ;
byte[] buf = new byte[1024] ;
int len = 0 ;
//此处我们需要判断是否zis流中存在条目,你可以理解为是否存在文件内容
while((entry = zis.getNextEntry()) != null){
//此处我们获取条目名称
String name = entry.getName();
System.out.println(name);
//我们将每一个条目进行解压,我们需要指定一个输出路径
FileOutputStream fos = new FileOutputStream("D:\\BigData\\JavaSE\\yinzhengjieData\\unzip\\"+ name) ;
while((len = zis.read(buf)) != -1){
fos.write(buf , 0 , len);
}
fos.close();
}
zis.close();
fis.close();
}
} /*
以上代码执行结果如下:
yinzhengjie_entry1
yinzhengjie_entry2
yinzhengjie_entry3
*/

  解压后我们查看指定目录中存在的文件如下:

Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream)的更多相关文章

  1. Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)

    第一讲     File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...

  2. Java基础-IO流对象之字符类(FileWrite与FileReader)

    Java基础-IO流对象之字符类(FileWrite与FileReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常见编码简介 1>ASCII 我们知道计算机是 ...

  3. Java基础-IO流对象之随机访问文件(RandomAccessFile)

    Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...

  4. Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)

    Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存 ...

  5. Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)

    Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...

  6. Java基础-IO流对象之打印流(PrintStream与PrintWriter)

    Java基础-IO流对象之打印流(PrintStream与PrintWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.打印流的特性 打印对象有两个,即字节打印流(P ...

  7. Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream)

    Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.对象的序 ...

  8. java基础-IO流对象之Properties集合

    java基础-IO流对象之Properties集合 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Properties集合的特点 Properties类表示了一个持久的属性集. ...

  9. Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)

    Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符缓冲流 字符缓冲流根据流的 ...

随机推荐

  1. EOS开发基础之一:源代码下载与开发环境搭建

    区块链最近挺火的,我又是个非常缺钱的人,所以紧跟了潮流一头扎进区块链的研究中. 这EOS项目是目前比较火的一个项目,相信很多朋友拿到这份EOS的源代码后都会一脸懵逼,因为……这代码写得太高级了,老纸看 ...

  2. petapoco 对存储过程的扩展 干货

    好久没发表文章了.心血来潮,简单的介绍下这次工作中的问题. 项目中运用了Petapoco,可是petapoco对存储过程的支持不够好.或者说对于某些特殊场景,petapoco的sql支持度有限. 比如 ...

  3. Java实验报告(实验二)

    课程:Java程序设计          班级: 1351 姓名:王玮怡                学号:20135116 成绩:             指导教师:娄嘉鹏       实验日期: ...

  4. 《Linux内核分析》 第四节 扒开系统调用的三层皮(上)

    <Linux内核分析> 第四节 扒开系统调用的三层皮(上) 张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com ...

  5. Linux内核分析(第二周)

    操作系统是如何工作的? 一.总结:三大法宝 1.存储程序计算机 + 函数调用堆栈 + 中断机制 2.堆栈:C语言程序运行时候必须的一个记录调用路径和参数的空间(函数调用框架/提供局部变量/传递参数/保 ...

  6. 第一个sprint冲刺第一阶段

    会议地址:男生宿舍1栋B4014 会议内容:讨论如何完成产品 成员:李新,朱浩龙,陈俊金,叶煜稳,林德麟 困难:对于做成一个手机APP,尚未掌握:成员尚在学习中 master:陈俊金

  7. 更新pip10后 ImportError: cannot import name ‘main'

    百度了几个回答都没有解决问题,有些回答明显是直接复制过来的一点价值都没有,然后google一下立马解决.很多时候不能怪搜索引擎,问题出在一些国内网友对知识的不负责任 解决:找到报错文件,也就是那个pi ...

  8. 在iOS9 中使用3D Touch

    iOS9提供了四类API( Home Screen Quick Action . UIKit Peek & Pop . WebView Peek & Pop 和 UITouch For ...

  9. ElasticSearch 2 (34) - 信息聚合系列之多值排序

    ElasticSearch 2 (34) - 信息聚合系列之多值排序 摘要 多值桶(terms.histogram 和 date_histogram)动态生成很多桶,Elasticsearch 是如何 ...

  10. Access restriction: The type 'BASE64Decoder' is not API

    Access restriction: The type 'BASE64Decoder' is not API (restriction on required library 'C:\Program ...