文件压缩

来源:互联网 发布:域名找回 编辑:程序博客网 时间:2024/06/16 01:04

传送门 http://blog.csdn.net/hanshileiai/article/details/6718375

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




2、ZipFile


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  解压缩文件
import java.io.File ;  
import java.io.OutputStream ;  
import java.io.InputStream ;  
import java.util.zip.ZipEntry ;  
import java.util.zip.ZipFile ;  
import java.util.zip.ZipInputStream ;  
import java.io.FileInputStream ;  
import java.io.FileOutputStream ;  
public class ZipInputStreamDemo02{  
    public static void main(String args[]) throws Exception{    // 所有异常抛出  
        File file = new File("d:" + File.separator + "mldndir.zip") ;   // 定义压缩文件名称  
        File outFile = null ;   // 输出文件的时候要有文件夹的操作  
        ZipFile zipFile = new ZipFile(file) ;   // 实例化ZipFile对象  
        ZipInputStream zipInput = null ;    // 定义压缩输入流  
        OutputStream out = null ;   // 定义输出流,用于输出每一个实体内容  
        InputStream input = null ;  // 定义输入流,读取每一个ZipEntry  
        ZipEntry entry = null ; // 每一个压缩实体  
        zipInput = new ZipInputStream(new FileInputStream(file)) ;  // 实例化ZIpInputStream  
        while((entry = zipInput.getNextEntry())!=null){ // 得到一个压缩实体  
            System.out.println("解压缩" + entry.getName() + "文件。") ;  
            outFile = new File("d:" + File.separator + entry.getName()) ;   // 定义输出的文件路径  
            if(!outFile.getParentFile().exists()){  // 如果输出文件夹不存在  
                outFile.getParentFile().mkdir() ;   // 创建文件夹  
            }  
            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() ;   // 关闭输出流  
        }  
        input.close() ;  
    }  
};