zoukankan      html  css  js  c++  java
  • java实现文件zip压缩或者解压缩

    zip压缩或者解压缩
    package com.test;

    import java.io.*;
    import java.util.*;
    import java.util.zip.ZipOutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    public class TestZip {
     
    public TestZip() {
     }
     
    /**
      * 压缩文件
      * 
      * 
    @param srcfile
      *            File[] 需要压缩的文件列表
      * 
    @param zipfile
      *            File 压缩后的文件
      
    */
     
    public static void ZipFiles(java.io.File[] srcfile, java.io.File zipfile) {
      
    byte[] buf = new byte[1024];
      
    try {
       
    // Create the ZIP file
       ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
         zipfile));
       
    // Compress the files
       for (int i = 0; i < srcfile.length; i++) {
        FileInputStream in 
    = new FileInputStream(srcfile[i]);
        
    // Add ZIP entry to output stream.
        out.putNextEntry(new ZipEntry(srcfile[i].getName()));
        
    // Transfer bytes from the file to the ZIP file
        int len;
        
    while ((len = in.read(buf)) > 0) {
         out.write(buf, 
    0, len);
        }
        
    // Complete the entry
        out.closeEntry();
        in.close();
       }
       
    // Complete the ZIP file
       out.close();
       System.out.println(
    "压缩完成.");
      } 
    catch (IOException e) {
       e.printStackTrace();
      }
     }
     
    /**
      * 解压缩
      * 
      * 
    @param zipfile
      *            File 需要解压缩的文件
      * 
    @param descDir
      *            String 解压后的目标目录
      
    */
     
    public static void UnZipFiles(java.io.File zipfile, String descDir) {
      
    try {
       
    // Open the ZIP file
       ZipFile zf = new ZipFile(zipfile);
       
    for (Enumeration entries = zf.entries(); entries.hasMoreElements();) {
        
    // Get the entry name
        ZipEntry entry = ((ZipEntry) entries.nextElement());
        String zipEntryName 
    = entry.getName();
        InputStream in 
    = zf.getInputStream(entry);
        OutputStream out 
    = new FileOutputStream(descDir + zipEntryName);
        
    byte[] buf1 = new byte[1024];
        
    int len;
        
    while ((len = in.read(buf1)) > 0) {
         out.write(buf1, 
    0, len);
        }
        
    // Close the file and stream
        in.close();
        out.close();
        System.out.println(
    "解压缩完成.");
       }
      } 
    catch (IOException e) {
       e.printStackTrace();
      }
     }
    }
  • 相关阅读:
    [20211108]索引分裂块清除日志增加(唯一索引)2.txt
    [20220104]in list 几种写法性能测试.txt
    [20211215]提示precompute_subquery补充.txt
    [20211217]滑稽可笑的程序代码2.txt
    SourceTree通过配置SSH来链接GitLab
    Docker在虚拟机中的安装
    .Net 6 Log4Net【.Net Core】
    es(elasticsearch)磁盘清理记录
    JSON 之 Jackson
    git FAQ
  • 原文地址:https://www.cnblogs.com/cjunj/p/1834676.html
Copyright © 2011-2022 走看看