java 压缩文件(文件夹)

package others;

import java.io.BufferedOutputStream;  
import java.io.BufferedReader;  
import java.io.File;  
import java.io.FileInputStream;  
  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.util.zip.Adler32;  
import java.util.zip.CheckedOutputStream;  
  
import org.apache.tools.zip.ZipEntry;  
import org.apache.tools.zip.ZipOutputStream;  
  
  

public class Zip {  
  
    /** 
     * 中文条件下文件(夹)压缩 
     * 
     */  
    public static void zipCompress(String src,String des)   
        throws IOException{  
        ZipOutputStream out=null;  
        try {  
            CheckedOutputStream cusm=  
                new CheckedOutputStream(new FileOutputStream(des),new Adler32());  
            out=new ZipOutputStream(new BufferedOutputStream(cusm));  
              
            fileZip(new File(src),out,"");  
        }finally{  
            if(out!=null){  
                out.close();  
            }  
        }  
    }  
  
      
    private static void fileZip(File file, ZipOutputStream out,   
                String base)  throws IOException{  
        if(file.isFile()){  
            if(base.length()>0){  
                out.putNextEntry(new ZipEntry(base));  
            }else{  
                out.putNextEntry(new ZipEntry(file.getName()));  
            }  
              
            BufferedReader in=new BufferedReader(  
                    new InputStreamReader(new FileInputStream(file),"ISO8859_1"));  
              
            int c;  
            while((c=in.read())!=-1){  
                out.write(c);  
            }  
            in.close();  
              
        }else if(file.isDirectory()){  
            File[] subFiles=file.listFiles();  
              
            out.putNextEntry(new ZipEntry(base+File.separator));  
            base=base.length()!=0?base+File.separator:"";  
              
            for(File subFile:subFiles){  
                fileZip(subFile,out,base+subFile.getName());  
            }  
        }  
          
    }  
    
    public static void main(String[] args) {
    	/*需要压缩的源文件夹路径*/  
        String folderSrcPath="E://123";  
          
        /*压缩后的zip文件及其存放位置*/  
        String forderDesPath="E://压缩文件.zip";  
          
       
       
        try {
			Zip.zipCompress(folderSrcPath,forderDesPath);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
        System.out.println("完成压缩");   
	}
}  


说明:1、需要引入jar包

2,、当被压缩的文件夹比较大时,会很慢的,耗时较多

参考:http://blog.csdn.net/gaoyusi4964238/article/details/4948151

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值