解压任意多层的文件夹 Java代码实现
2016-03-03 08:49
495 查看
相对压缩而言,解压要复杂一些。每一步操作的意义和作用都标有注释,希望对学习的人有所帮助!
package io; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipInputStream; public class ZipInputStreamDemo { public static void main(String[] args) throws Exception{ ZipInputStreamMethod(); } public static void ZipInputStreamMethod() throws Exception, Exception { /*1.获得压缩文件*/ File file = new File("F:"+File.separator+"features.zip"); /*2.实例化ZpFile对象,这个对象主要有两个作用,一个是用来实例化压缩文件的输入流, 第二就是通过getInputStream()方法获得每个压缩实体的输入流.可以这样理解:首先 你要获得一个集装箱,然后再获得集装箱里面的每一个实体东西*/ ZipFile zipFile = new ZipFile(file); ZipInputStream zipInput = new ZipInputStream(new FileInputStream(file)); /*3.声明一些要用到的对象引用*/ File outFile = null; //这个是解压之后文件的输出目录 ZipEntry entry = null; //这个是压缩实体,就压缩文件中每一个压缩文件或压缩文件夹 InputStream input =null; //这是输入流,通过它的read()方法就可以读取每个压缩实体的数据 OutputStream out = null; //这是输出流,通过它的write()方法将读取的数据写入到指定的文件 while((entry = zipInput.getNextEntry())!= null){ //获取压缩文件夹中的每一个文件实体 System.out.println("解压文件名称为:"+entry.getName()); String outPathStr = "F:"+File.separator+entry.getName(); //构造每一个文件实体的路径 outFile = new File(outPathStr); //实例化解压文件 if(!outFile.getParentFile().exists()){ outFile.getParentFile().mkdirs(); } if(!outFile.exists()){ outFile.createNewFile(); } input = zipFile.getInputStream(entry); //实例化输入流 out = new FileOutputStream(outFile); //实例化输出流 int temp = 0; while((temp = input.read())!= -1){ out.write(temp); } input.close(); out.close(); } zipFile.close(); zipInput.close(); } }
相关文章推荐
- TaintDroid下载与编译(二):JDK的下载与安装
- 浅谈JAVA设计模式
- Java版本-----商店购物系统
- SpringMVC源码解析 - HandlerMethod
- Spring官网下载dist.zip的几种方法
- MyEclipse2015 编写js报 'Calculating completion proposals..' has encountered a problem.
- Java接口详解
- 深入探讨 Java 类加载器
- (java)Binary Tree Preorder Traversal
- (java)Missing Number
- 运行程序中出现的小问题
- Java图形界面
- java基础总结第一篇(JAVA简介)
- Spring MVC返回json数据的配置方式
- Java支持的数据类型有哪些?什么是自动拆装箱?
- spring RestTemplate用法详解
- spring异步线程的处理 @@Async介绍
- spring代码笔记
- java-tip-Collections.synchronized系列生成的容器
- Java集合基础 一 几个实现类之间的比较