您的位置:首页 > 编程语言 > Java开发

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格式输出的。

继承关系:

 

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 ;
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: