java IO流 Zip文件操作

一.简介

    压缩流操作主要的三个类 ZipOutputStream、ZipFile、ZipInputStream ,经常可以看到各种压缩文件:zip、jar、GZ格式的压缩文件

二.ZipEntry

 说明:在实例化ZipEntry 的时候,要设置名称,此名称实际上就是压缩文件中每一个元素的名称。

三、ZipOutputStream

四、压缩一个文件

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() ;    // 关闭输出流  
    }  
};  

五、压缩一个文件夹

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() ;    // 关闭输出流  
    }  
};  

六、 ZipFile

第一步:为 ZipFile 实例化,实例化时需要接收File  类的引用

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 进行解压缩操作

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() ;    // 关闭输出流  
    }  
}; 
原文地址:https://www.cnblogs.com/hongwz/p/5649905.html