Java—將文件壓縮爲zip文件

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 hwt 
 * 
 */  
public class FileToZip {  
  
    private FileToZip(){}  
    
    /** 
     * 將存放在sourceFilePath目錄下的源文件,打包成fileName名稱的zip文件,並存放到zipFilePath路徑下 
     * @param sourceFilePath :待壓縮的文件路徑 
     * @param zipFilePath :壓縮後存放路徑 
     * @param fileName :壓縮後文件的名稱 
     * @return 
     */  
    public static String fileToZip(String sourceFilePath,String zipFilePath,String fileName){  
        File sourceFile = new File(sourceFilePath);  
        FileInputStream fis = null;  
        BufferedInputStream bis = null;  
        FileOutputStream fos = null;  
        ZipOutputStream zos = null;  
        //判斷源文件是否存在 if(!sourceFile.exists()){  
            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); } } } } } 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 fileName + ".zip"; } public static void main(String[] args){ String sourceFilePath = "D:\\source"; String zipFilePath = "D:\\targetzip"; String fileName = "test"; String fn = FileToZip.fileToZip(sourceFilePath, zipFilePath, fileName); System.out.println(fn); } }
相關文章
相關標籤/搜索