FileToZip

package gov.hkpf.cis2.ui.address.util;
import java.io.BufferedInputStream; 
import java.io.BufferedOutputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.zip.ZipEntry; 
import java.util.zip.ZipOutputStream; 
 
/**
* 将文件打包成ZIP压缩文件
* @author LanP
* @since 2012-3-1 15:47
*/ 
public final class FileToZip { 
     
    private FileToZip() { 
         
    } 
     
    /**
     * 将存放在sourceFilePath目录下的源文件,打包成fileName名称的ZIP文件,并存放到zipFilePath。
     * @param sourceFilePath 待压缩的文件路径
     * @param zipFilePath    压缩后存放路径
     * @param fileName       压缩后文件的名称
     * @return flag
     */ 
    public static boolean fileToZip(String sourceFilePath,String zipFilePath,String fileName) { 
        boolean flag = false; 
        File sourceFile = new File(sourceFilePath); 
        FileInputStream fis = null; 
        BufferedInputStream bis = null; 
        FileOutputStream fos = null; 
        ZipOutputStream zos = null; 
         
        if(sourceFile.exists() == false) { 
            System.out.println(">>>>>> 待压缩的文件目录:" + sourceFilePath + " 不存在. <<<<<<"); 
        } else { 
            try { 
                File zipFile = new File(zipFilePath + "/" + fileName + ".zip"); 
                if(zipFile.exists()) { 
                    System.out.println(">>>>>> " + zipFilePath + " 目录下存在名字为:" + fileName + ".zip" + " 打包文件. <<<<<<"); 
                } else { 
                    File[] sourceFiles = sourceFile.listFiles(); 
                    if(null == sourceFiles || sourceFiles.length < 1) { 
                        System.out.println(">>>>>> 待压缩的文件目录:" + sourceFilePath + " 里面不存在文件,无需压缩. <<<<<<"); 
                    } else { 
                        fos = new FileOutputStream(zipFile); 
                        zos = new ZipOutputStream(new BufferedOutputStream(fos)); 
                        byte[] bufs = new byte[1024*10]; 
                        for(int i=0;i<sourceFiles.length;i++) { 
                            // 创建ZIP实体,并添加进压缩包 
                            ZipEntry zipEntry = new ZipEntry(sourceFiles[i].getName()); 
                            zos.putNextEntry(zipEntry); 
                            // 读取待压缩的文件并写进压缩包里 
                            fis = new FileInputStream(sourceFiles[i]); 
                            bis = new BufferedInputStream(fis,1024*10); 
                            int read = 0; 
                            while((read=bis.read(bufs, 0, 1024*10)) != -1) { 
                                zos.write(bufs, 0, read); 
                            } 
                        } 
                        flag = true; 
                    } 
                } 
            } catch (FileNotFoundException e) { 
                e.printStackTrace(); 
                throw new RuntimeException(e); 
            } catch (IOException e) { 
                e.printStackTrace(); 
                throw new RuntimeException(e); 
            } finally { 
                // 关闭流 
                try { 
                    if(null != bis) bis.close(); 
                    if(null != zos) zos.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                    throw new RuntimeException(e); 
                } 
            } 
        } 
         
        return flag; 
    } 
     
    /**
     * 将文件打包成ZIP压缩文件,main方法测试
     * @param args
     */ 
    public static void main(String[] args) { 
        String sourceFilePath = "C:\\home\\lp20120301"; 
        String zipFilePath = "C:\\home"; 
        String fileName = "lp20120301"; 
        boolean flag = FileToZip.fileToZip(sourceFilePath, zipFilePath, fileName); 
        if(flag) { 
            System.out.println(">>>>>> 文件打包成功. <<<<<<"); 
        } else { 
            System.out.println(">>>>>> 文件打包失败. <<<<<<"); 
        } 
    } 

猜你喜欢

转载自youcp999.iteye.com/blog/2319024