1. 程式人生 > >JAVA利用Zip4j解壓縮

JAVA利用Zip4j解壓縮

一、壓縮

1、標準壓縮

複製程式碼
ZipFile zipFile = new ZipFile("c:\\date.zip");
ArrayList filesToAdd = new ArrayList();
filesToAdd.add(new File(csvFilePath));

ZipParameters parameters = new ZipParameters();  
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);  
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);

//設定密碼
parameters.setEncryptFiles(true); 
parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);  
parameters.setPassword("123456"); 

zipFile.addFiles(filesToAdd, parameters);
複製程式碼

2、AES加密

複製程式碼
ZipFile zipFile = new ZipFile("c:\\ZipTest\\test3.zip");

ArrayList filesToAdd = new ArrayList();
filesToAdd.add(new File("c:\\ZipTest\\sample.txt"));

ZipParameters parameters = new ZipParameters();
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); 

//設定密碼 parameters.setEncryptFiles(true); parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES); parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256); parameters.setPassword("123456!"); zipFile.addFiles(filesToAdd, parameters);
複製程式碼

3、資料夾壓縮

複製程式碼
ZipFile zipFile = new ZipFile("c:\\ZipTest\\test4.zip");

String folderToAdd 
= "c:\\ZipTest"; ZipParameters parameters = new ZipParameters(); parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); zipFile.addFolder(folderToAdd, parameters);
複製程式碼

4、將檔案壓縮到指定資料夾中

複製程式碼
ZipFile zipFile = new ZipFile("c:\\ZipTest\\test5.zip");

ArrayList filesToAdd = new ArrayList();
filesToAdd.add(new File("c:\\ZipTest\\sample.txt"));

ZipParameters parameters = new ZipParameters();
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);

parameters.setRootFolderInZip("test2/");

zipFile.addFiles(filesToAdd, parameters);
複製程式碼

5、向ZIP中新增檔案

複製程式碼
ZipFile zipFile = new ZipFile("c:\\ZipTest\\test1.zip");

ZipParameters parameters = new ZipParameters();
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
parameters.setFileNameInZip("檔案2.doc");
parameters.setSourceExternalStream(true);

InputStream is = new FileInputStream("c:\\ZipTest\\檔案2.doc");

zipFile.addStream(is, parameters);

is.close();
複製程式碼

6、分隔壓縮檔案

複製程式碼
ZipFile zipFile = new ZipFile("c:\\ZipTest\\test7.zip");

ArrayList filesToAdd = new ArrayList();
filesToAdd.add(new File("c:\\ZipTest\\sample.txt"));

ZipParameters parameters = new ZipParameters();
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); 

zipFile.createZipFile(filesToAdd, parameters, true, 65536);
複製程式碼

7、建立ZIP流

複製程式碼
ArrayList filesToAdd = new ArrayList();
filesToAdd.add(new File("c:\\ZipTest\\sample.txt"));

ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream(new File("c:\\ZipTest\\test8.zip")));

ZipParameters parameters = new ZipParameters();
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);

// Set password
parameters.setEncryptFiles(true);
parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
parameters.setPassword("test123!");

for (int i = 0; i < filesToAdd.size(); i++) {
    File file = (File)filesToAdd.get(i);
    outputStream.putNextEntry(file,parameters);
    
    if (file.isDirectory()) {
        outputStream.closeEntry();
        continue;
    }
    
    InputStream  inputStream = new FileInputStream(file);
    byte[] readBuff = new byte[4096];
    int readLen = -1;
    while ((readLen = inputStream.read(readBuff)) != -1) {
        outputStream.write(readBuff, 0, readLen);
    }
    
    outputStream.closeEntry();
    
    inputStream.close();
}

outputStream.finish();

outputStream.close();
複製程式碼

8、從ZIP中刪除檔案

複製程式碼
ZipFile zipFile = new ZipFile("c:\\ZipTest\\test1.zip");

//刪除指定檔案
zipFile.removeFile("sample.txt");

//刪除第一個檔案
if (zipFile.getFileHeaders() != null && zipFile.getFileHeaders().size() > 0) {
    zipFile.removeFile((FileHeader)zipFile.getFileHeaders().get(0));
} else {
    System.out.println("This cannot be demonstrated as zip file does not have any files left");
}
複製程式碼

9、獲取ZIP中檔案一覽

複製程式碼
ZipFile zipFile = new ZipFile("c:\\ZipTest\\test5.zip");

List fileHeaderList = zipFile.getFileHeaders();

for (int i = 0; i < fileHeaderList.size(); i++) {
    FileHeader fileHeader = (FileHeader)fileHeaderList.get(i);
    System.out.println("****File Details for: " + fileHeader.getFileName() + "*****");
    System.out.println("Name: " + fileHeader.getFileName());
    System.out.println("Compressed Size: " + fileHeader.getCompressedSize());
    System.out.println("Uncompressed Size: " + fileHeader.getUncompressedSize());
    System.out.println("CRC: " + fileHeader.getCrc32());
    System.out.println("************************************************************");
}
複製程式碼

二、解壓

1、解壓所有檔案

複製程式碼
//方法一
ZipFile zipFile = new ZipFile("c:\\ZipTest\\test1.zip");        
zipFile.extractAll("c:\\ZipTest1");

//方法二
ZipFile zipFile2 = new ZipFile("c:\\ZipTest\\test2.zip");        
if (zipFile2.isEncrypted()) {
    zipFile2.setPassword("test123!");
}
List fileHeaderList = zipFile2.getFileHeaders();
for (int i = 0; i < fileHeaderList.size(); i++) {
    FileHeader fileHeader = (FileHeader)fileHeaderList.get(i);
    zipFile2.extractFile(fileHeader, "c:\\ZipTest2\\");
}
複製程式碼

2、解壓所有檔案到流

複製程式碼
ZipFile zipFile = new ZipFile("c:\\ZipTest\\test2.zip");        
if (zipFile.isEncrypted()) {
    zipFile.setPassword("test123!");
}

List fileHeaderList = zipFile.getFileHeaders();

for (int i = 0; i < fileHeaderList.size(); i++) {
    FileHeader fileHeader = (FileHeader)fileHeaderList.get(i);
    if (fileHeader != null) {
        
        String outFilePath = "c:\\ZipTest3\\" + System.getProperty("file.separator") + fileHeader.getFileName();
        File outFile = new File(outFilePath);
        
        if (fileHeader.isDirectory()) {
            outFile.mkdirs();
            continue;
        }
        
        File parentDir = outFile.getParentFile();
        if (!parentDir.exists()) {
            parentDir.mkdirs();
        }
        
        ZipInputStream is = zipFile.getInputStream(fileHeader);
        OutputStream os = new FileOutputStream(outFile);
        
        int readLen = -1;
        byte[] buff = new byte[4096];
        
        while ((readLen = is.read(buff)) != -1) {
            os.write(buff, 0, readLen);
        }
        
        os.close();
        os = null;
        is.close();
        is = null;
        
        UnzipUtil.applyFileAttributes(fileHeader, outFile);
        
        System.out.println("Done extracting: " + fileHeader.getFileName());
    } else {
        System.err.println("fileheader is null. Shouldn't be here");
    }
}
複製程式碼

3、解壓單個檔案

ZipFile zipFile = new ZipFile("c:\\ZipTest\\test2.zip");
if (zipFile.isEncrypted()) {
    zipFile.setPassword("test123!");
}

zipFile.extractFile("檔案.doc", "c:\\ZipTest4\\");

相關推薦

JAVA利用Zip4j壓縮

一、壓縮 1、標準壓縮 ZipFile zipFile = new ZipFile("c:\\date.zip"); ArrayList filesToAdd = new ArrayList(); filesToAdd.add(new File(csvFile

Base64的Java服務端壓縮圖片方法

/* * Copyright (c) Goldwind Corp. * All Rights Reserved. */ import java.io.File;import java.io.FileOutputStream;import java.io.IOException

java壓縮/壓縮/加密壓縮/加密壓縮 ZIP4J ZIP檔案壓縮壓縮學習

                最近公司準備讓各專案組提供公共工具元件,手中正好無事便研究其中一個工具 - 檔案壓縮與解壓縮工具。           目前JAVA API已提供對於ZIP檔案的壓縮與解壓縮,但網上總結不支援ZIP檔案加密與解密甚至對於中文支援也有問題,於是果斷找其他的支援加密解密的第三方包。

JAVA利用cmd命令列呼叫WINRAR壓及壓縮

  JAVA利用cmd命令列呼叫WINRAR解壓及壓縮     前言 對於zip檔案,java有自帶類庫java.util.zip;可是要想解壓rar檔案只能靠第三方類庫,我試過兩個:com.github.junrar和de.innosystec.u

Android 利用Java實現壓縮壓縮(zip、gzip)支援中文路徑

  zip扮演著歸檔和壓縮兩個角色;gzip並不將檔案歸檔,僅只是對單個檔案進行壓縮,所以,在UNIX平臺上,命令tar通常用來建立一個檔案檔案,然後命令gzip來將檔案檔案壓縮。   Java I/O類庫還收錄了一些能讀寫壓縮格式流的類。要想提供壓縮功能,只要把它們包

Java壓縮檔案(利用apache的ant包)

 需要用到的jar包: apache-ant-1.9.3.jar 壓縮方法 [java] view plaincopyprint? /**     * @desc 將原始檔/資料夾生成指定格式的壓縮檔案,格式zip     * @param reso

Java學習之使用net.lingala.zip4j.core.ZipFile壓縮檔案,帶壓縮排度

import java.io.File; import net.lingala.zip4j.core.ZipFile; import net.lingala.zip4j.exception.ZipException; import net.lingala.zip4j.progress.ProgressMoni

java生成zip壓縮文件,壓縮文件

fileinput 重復 temp parent mp4 define blog exc java 1.生成zip public static void main(String[] args) { try { // testZip("

java壓縮/壓縮zip格式文件

空字符 log file ++ tel create equals sep 同名 1package com.resoft.util; 3import java.io.BufferedOutputStream; 4import java.io.File; 5import ja

java利用myeclipse自帶三大框架搭建三大框架(Hibernate+Struts2+Spring)過程詳

sun 過程 9.png att alt 分享圖片 struts apach sch 搭建過程因人而異,我的搭建過程大致是這樣的:   1.創建一個javaweb項目;   2.導入Spring框架,上圖:     2.1:     2.2:     2.3:   3.

JAVA UI 實現ZIP的壓縮壓縮

open return filepath sdi 每一個 util child length 壓縮與解壓縮 壓縮與解壓縮代碼 package ZIP;import java.io.*;import java.util.Enumeration;import java.util

java 編程思想 GZip(Zip) 格式壓縮壓縮

分享 ron IV class println fileread pub TE new GZIPOutputStream 只能支持 OutputStream對象,不能接受Writer 對象,會中文亂碼 GZIPInputStream 支持 Reader字符流

Java實現對zip和rar文件的壓縮

資源 types num tar rec absolut cfi pub more package com.svse.test; import java.io.File;import java.io.FileOutputStream;import java.io.IOExc

java使用 zipoutputstream 進行壓縮時提示:不可預料的壓縮檔案末端

private static void zip(File filein, String basepath, ZipOutputStream out) throws IOException { FileInputStream in = null; try { if (filein.isD

Java壓縮zip檔案工具類(支援zip資料夾下多級目錄結構)

文章目錄 Java解壓縮zip檔案工具類(支援zip資料夾下多級目錄結構) 1. 前言 2. 正文 2.1 解壓縮後文件目錄結構展示 2.2 注意事項 2.3 異常

Java Zip壓縮 壓縮

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStr

java利用POI實現Excel匯入匯出詳-支援97-2013版本以及2017版本

package com.kero99.ygc.excel; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.apache.

JAVA字串的GZIP壓縮壓縮方法

package com.gzip; import java.io.ByteArrayInputStream;    import java.io.ByteArrayOutputStream;    import java.io.IOException;    import java.util.zip.G

java物件序列化、gzip壓縮壓縮、加密解密

有時在應用中需要將java物件序列化儲存起來,有的需要壓縮,有的需要加密 EncryptUtil.java Java程式碼   package org.test.demo;   import java.io.UnsupportedE

Java壓縮壓縮檔案的幾種方法

Java壓縮解壓縮檔案的方法有,第一中藉助java jdk自帶的ZipOutputStream和ZipInputStream。 第二種,藉助第三方jar, 例如Apache Commons Compress和Ant。 下面以Ant為例詳細介紹。 前提,需要將