Java IO流 Zip文件的压缩和好压缩
2016-07-04 21:12
507 查看
Java IO流 Zip文件的压缩和解压缩
最近在复习java的IO流,发现zip流这块还是空白,所以补补课,发现一片比较好的文档,所以转载了,出处:http://blog.csdn.net/hanshileiai/article/details/6718375?reload,个人觉得写的比较好,其中的方法我也按照它的思路测试过,没有问题。
1、了解压缩流的主要作用
2、了解JAVA IO 支持的三种压缩格式
3、掌握ZipOutputStream、ZipFile、ZipInputStream 三个类的作用
具体内容
经常可以看见各种压缩文件:zip、jar、GZ、
正常情况下在IO 操作中,所有的类库都是在 IO 包中。
在实例化ZipEntry 的时候,要设置名称,此名称实际上就是压缩文件中每一个元素的名称。
1、ZipOutputStream
此类的功能就是完成ZIP格式输出的。
继承关系:
从定义可以发现,就是一个字节的输出流。
在压缩文件中,每一个压缩的内容都可以用一个ZipEntry 表示,所以在进行压缩之前必须通过putNextEntry 设置一个ZipEntry 即可。
[java] view plaincopy
import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
import java.util.zip.ZipEntry ;
import java.util.zip.ZipOutputStream ;
import java.io.FileOutputStream ;
public class ZipOutputStreamDemo01{
public static void main(String args[]) throws Exception{ // 所有异常抛出
File file = new File("d:" + File.separator + "mldn.txt") ; // 定义要压缩的文件
File zipFile = new File("d:" + File.separator + "mldn.zip") ; // 定义压缩文件名称
InputStream input = new FileInputStream(file) ; // 定义文件的输入流
ZipOutputStream zipOut = null ; // 声明压缩流对象
zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;
zipOut.putNextEntry(new ZipEntry(file.getName())) ; // 设置ZipEntry对象
zipOut.setComment("www.mldnjava.cn") ; // 设置注释
int temp = 0 ;
while((temp=input.read())!=-1){ // 读取内容
zipOut.write(temp) ; // 压缩输出
}
input.close() ; // 关闭输入流
zipOut.close() ; // 关闭输出流
}
};
以上的操作代码完成的只是一个文件的压缩,如果要完成一个文件夹呢?
[java] view plaincopy
import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
import java.util.zip.ZipEntry ;
import java.util.zip.ZipOutputStream ;
import java.io.FileOutputStream ;
public class ZipOutputStreamDemo02{
public static void main(String args[]) throws Exception{ // 所有异常抛出
File file = new File("d:" + File.separator + "mldn") ; // 定义要压缩的文件夹
File zipFile = new File("d:" + File.separator + "mldndir.zip") ; // 定义压缩文件名称
InputStream input = null ; // 定义文件输入流
ZipOutputStream zipOut = null ; // 声明压缩流对象
zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;
zipOut.setComment("www.mldnjava.cn") ; // 设置注释
int temp = 0 ;
if(file.isDirectory()){ // 判断是否是文件夹
File lists[] = file.listFiles() ; // 列出全部文件
for(int i=0;i<lists.length;i++){
input = new FileInputStream(lists[i]) ; // 定义文件的输入流
zipOut.putNextEntry(new ZipEntry(file.getName()
+File.separator+lists[i].getName())) ; // 设置ZipEntry对象
while((temp=input.read())!=-1){ // 读取内容
zipOut.write(temp) ; // 压缩输出
}
input.close() ; // 关闭输入流
}
}
zipOut.close() ; // 关闭输出流
}
};
3.2 ZipFile
是一个专门表示压缩文件的类。
ZipFile 在实例化的时候必须接收File 类的实例。此File 类的实例是指向一个压缩 *.zip 文件。
第一步:为 ZipFile 实例化
实例化时需要接收File 类的引用
[java] view plaincopy
import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
import java.util.zip.ZipEntry ;
import java.util.zip.ZipOutputStream ;
import java.util.zip.ZipFile ;
import java.io.FileOutputStream ;
public class ZipFileDemo01{
public static void main(String args[]) throws Exception{ // 所有异常抛出
File file = new File("d:" + File.separator + "mldn.zip") ; // 找到压缩文件
ZipFile zipFile = new ZipFile(file) ; // 实例化ZipFile对象
System.out.println("压缩文件的名称:" + zipFile.getName()) ; // 得到压缩文件的名称
}
};
通过ZipFile 文件,为mldn.zip 进行解压缩操作。
[java] view plaincopy
import java.io.File ;
import java.io.FileInputStream ;
最近在复习java的IO流,发现zip流这块还是空白,所以补补课,发现一片比较好的文档,所以转载了,出处:http://blog.csdn.net/hanshileiai/article/details/6718375?reload,个人觉得写的比较好,其中的方法我也按照它的思路测试过,没有问题。
1、了解压缩流的主要作用
2、了解JAVA IO 支持的三种压缩格式
3、掌握ZipOutputStream、ZipFile、ZipInputStream 三个类的作用
具体内容
经常可以看见各种压缩文件:zip、jar、GZ、
正常情况下在IO 操作中,所有的类库都是在 IO 包中。
在实例化ZipEntry 的时候,要设置名称,此名称实际上就是压缩文件中每一个元素的名称。
1、ZipOutputStream
此类的功能就是完成ZIP格式输出的。
继承关系:
java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
java.util.zip.DeflaterOutputStream
java.util.zip.ZipOutputStream
从定义可以发现,就是一个字节的输出流。
public void putNextEntry(ZipEntry e) throws IOException
在压缩文件中,每一个压缩的内容都可以用一个ZipEntry 表示,所以在进行压缩之前必须通过putNextEntry 设置一个ZipEntry 即可。
[java] view plaincopy
import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
import java.util.zip.ZipEntry ;
import java.util.zip.ZipOutputStream ;
import java.io.FileOutputStream ;
public class ZipOutputStreamDemo01{
public static void main(String args[]) throws Exception{ // 所有异常抛出
File file = new File("d:" + File.separator + "mldn.txt") ; // 定义要压缩的文件
File zipFile = new File("d:" + File.separator + "mldn.zip") ; // 定义压缩文件名称
InputStream input = new FileInputStream(file) ; // 定义文件的输入流
ZipOutputStream zipOut = null ; // 声明压缩流对象
zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;
zipOut.putNextEntry(new ZipEntry(file.getName())) ; // 设置ZipEntry对象
zipOut.setComment("www.mldnjava.cn") ; // 设置注释
int temp = 0 ;
while((temp=input.read())!=-1){ // 读取内容
zipOut.write(temp) ; // 压缩输出
}
input.close() ; // 关闭输入流
zipOut.close() ; // 关闭输出流
}
};
以上的操作代码完成的只是一个文件的压缩,如果要完成一个文件夹呢?
[java] view plaincopy
import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
import java.util.zip.ZipEntry ;
import java.util.zip.ZipOutputStream ;
import java.io.FileOutputStream ;
public class ZipOutputStreamDemo02{
public static void main(String args[]) throws Exception{ // 所有异常抛出
File file = new File("d:" + File.separator + "mldn") ; // 定义要压缩的文件夹
File zipFile = new File("d:" + File.separator + "mldndir.zip") ; // 定义压缩文件名称
InputStream input = null ; // 定义文件输入流
ZipOutputStream zipOut = null ; // 声明压缩流对象
zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;
zipOut.setComment("www.mldnjava.cn") ; // 设置注释
int temp = 0 ;
if(file.isDirectory()){ // 判断是否是文件夹
File lists[] = file.listFiles() ; // 列出全部文件
for(int i=0;i<lists.length;i++){
input = new FileInputStream(lists[i]) ; // 定义文件的输入流
zipOut.putNextEntry(new ZipEntry(file.getName()
+File.separator+lists[i].getName())) ; // 设置ZipEntry对象
while((temp=input.read())!=-1){ // 读取内容
zipOut.write(temp) ; // 压缩输出
}
input.close() ; // 关闭输入流
}
}
zipOut.close() ; // 关闭输出流
}
};
3.2 ZipFile
是一个专门表示压缩文件的类。
ZipFile 在实例化的时候必须接收File 类的实例。此File 类的实例是指向一个压缩 *.zip 文件。
第一步:为 ZipFile 实例化
实例化时需要接收File 类的引用
[java] view plaincopy
import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
import java.util.zip.ZipEntry ;
import java.util.zip.ZipOutputStream ;
import java.util.zip.ZipFile ;
import java.io.FileOutputStream ;
public class ZipFileDemo01{
public static void main(String args[]) throws Exception{ // 所有异常抛出
File file = new File("d:" + File.separator + "mldn.zip") ; // 找到压缩文件
ZipFile zipFile = new ZipFile(file) ; // 实例化ZipFile对象
System.out.println("压缩文件的名称:" + zipFile.getName()) ; // 得到压缩文件的名称
}
};
通过ZipFile 文件,为mldn.zip 进行解压缩操作。
[java] view plaincopy
import java.io.File ;
import java.io.FileInputStream ;
相关文章推荐
- Spring(二):IOC和DI的理解
- java多线程系列01(进程与线程)
- java1.7集合源码阅读: Stack
- Java中的String字符串,异常处理,和泛型
- 解决maven以及eclipse的jar以及exe中文乱码问题
- struts2的原理
- java原子操作类-原子数组类
- Spring配置文件的命名空间URI
- Spring(一):Spring概念、基本例子入门
- Eclipse断点调试
- mysql 存储过程的权限问题 java.sql.SQLException: The user specified as a definer ('xxxx'@'%') does not exist
- java的一些随笔
- 【Spring】java.lang.IndexOutOfBoundsException: Index: 256, Size: 256
- 加密 算法 & Java implementation
- SSH框架之Spring
- 对象导论之被隐藏的具体实现
- jar包源码的导入---让开发中可以去看别人的源码
- jar包源码的导入---让开发中可以去看别人的源码
- jar包源码的导入---让开发中可以去看别人的源码
- jar包源码的导入---让开发中可以去看别人的源码