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

           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格式的压缩文件如下:

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

二.解压文件

 /*
@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)

上一篇:包装类(Wrapper Class)


下一篇:Javascript实例技巧精选(8)—计算当月剩余天数