使用java.util.zip壓縮文件夾,支持加密,增加描述

ecfc 10年前發布 | 4K 次閱讀 Java

Java壓縮輔助類(支持文件夾壓縮,加密,增加描述)

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import nochump.util.extend.ZipOutput;

import com.training.commons.file.FileUtils;

/*

  • <p>Title: </p>
  • <p>desc:
  • <p>Copyright: Copyright(c)Gb 2012</p>
  • @author 三少
  • @website www.ij2ee.com
  • @time 下午4:00:13
  • @version 1.0
  • @since */ public class ZipOutputStreamUtils {

    public static void main(String args[]) throws IOException {

      //zipFiles("D:\\zipTest","D:\\1.ZIP");
      zipFilesWithPwd("D:\\zipTest","D:\\1.ZIP", "123456");
    

    }

    /*

    • @param path 文件夾路徑
    • @param returnFileName
    • @throws IOException */ public static void zipFiles(String path, String returnFileName)

       throws IOException {
      

      File inFile = new File(path); ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(

           returnFileName));
      

      zos.setComment("多文件處理"); zipFile(inFile, zos, ""); zos.close(); }

      /*

    • 壓縮時候加密.. */ public static void zipFilesWithPwd(String zipDir, String zipName,

       String password) {
      

      File file = new File(zipDir); byte[] zipByte = ZipOutput

           .getEncryptZipByte(file.listFiles(), password);
      
      

      FileUtils.writeByteFile(zipByte, new File(zipName));

      }

      public static void zipFile(File inFile, ZipOutputStream zos, String dir)

       throws IOException {
      
      

      if (inFile.isDirectory()) {

       File[] files = inFile.listFiles();
       for (File file : files)
           zipFile(file, zos, inFile.getName());
      

      } else {

       String entryName = null;
       if (!"".equals(dir))
           entryName = inFile.getName();
       else
           entryName = inFile.getName();
      
       ZipEntry entry = new ZipEntry(entryName);
       zos.putNextEntry(entry);
       InputStream is = new FileInputStream(inFile);
       int len = 0;
       while ((len = is.read()) != -1)
           zos.write(len);
       is.close();
      

      }

      }

      public static void deleteFile(File file) { if (file.exists()) { // 判斷文件是否存在

       if (file.isFile()) { // 判斷是否是文件
           file.delete(); // delete()方法 你應該知道 是刪除的意思;
       } else if (file.isDirectory()) { // 否則如果它是一個目錄
           File files[] = file.listFiles(); // 聲明目錄下所有的文件 files[];
           for (int i = 0; i < files.length; i++) { // 遍歷目錄下所有的文件
               deleteFile(files[i]); // 把每個文件 用這個方法進行迭代
           }
       }
       file.delete();
      

      } else {

       System.out.println("所刪除的文件不存在!" + '\n');
      

      } }

}</pre>

 本文由用戶 ecfc 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!