java將文件打包成ZIP壓縮文件的工具類實例

openkk 12年前發布 | 68K 次閱讀 Android開發 移動開發 Java

package com.lanp;

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(">>>>>> 文件打包失敗. <<<<<<");
      
      } } }</pre>
 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!