JAva時限圧縮zipのいくつかのスキーム

33547 ワード

必要に応じて、指定されたディレクトリの下のファイルとフォルダを指定された の名前に圧縮し、".zip"で終わる圧縮パッケージで顧客のダウンロードを提供します.
package com.gblfy.util;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.CRC32;
import java.util.zip.CheckedOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * java  zip    (                zip )
 *
 * @author gblfy
 * @date 2020-07-02
 */
public class ZipCompressorUtil {
    static final int BUFFER = 8192;

    private File zipFile;

    public ZipCompressorUtil(String pathName) {
        zipFile = new File(pathName);
    }

    /**
     *            
     * 

* , * : * zip : a.zip * : D:\1\ * :a.zip 1 *

* * @param pathName / */
public void compressContainShell(String... pathName) { ZipOutputStream out = null; try { FileOutputStream fileOutputStream = new FileOutputStream(zipFile); CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32()); out = new ZipOutputStream(cos); String basedir = ""; for (int i = 0; i < pathName.length; i++) { // compress(new File(pathName[i]), out, basedir); } out.close(); } catch (Exception e) { throw new RuntimeException(e); } } /** * * * @param files */ public void compressContainShell(File[] files) { ZipOutputStream out = null; try { FileOutputStream fileOutputStream = new FileOutputStream(zipFile); CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32()); out = new ZipOutputStream(cos); String basedir = ""; for (int i = 0; i < files.length; i++) { // compress(files[i], out, basedir); } out.close(); } catch (Exception e) { throw new RuntimeException(e); } } /** * /** * *

* , * : * zip : a.zip * : D:\1\ * :a.zip 1 *

* * @param srcPathNameOrFileName */
public void compressNotContainShell(String srcPathNameOrFileName) { ZipOutputStream out = null; try { FileOutputStream fileOutputStream = new FileOutputStream(zipFile); CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32()); out = new ZipOutputStream(cos); String basedir = ""; // File dir = new File(srcPathNameOrFileName); if (!dir.exists()) { System.out.println(" , !"); return; } File[] files = dir.listFiles(); for (int i = 0; i < files.length; i++) { compress(new File(String.valueOf(files[i])), out, basedir); } out.close(); } catch (Exception e) { throw new RuntimeException(e); } } /** * : *

* 1. , * 2. , *

* * @param file * @param out * @param basedir */
private void compress(File file, ZipOutputStream out, String basedir) { if (file.isDirectory()) { System.out.println(" :" + basedir + file.getName()); // this.compressDirectory(file, out, basedir); } else { System.out.println(" :" + basedir + file.getName()); // this.compressFile(file, out, basedir); } } /** * * * @param dir * @param out zip * @param basedir : “” / */ private void compressDirectory(File dir, ZipOutputStream out, String basedir) { if (!dir.exists()) { System.out.println(" , !"); return; } File[] files = dir.listFiles(); for (int i = 0; i < files.length; i++) { /* */ compress(files[i], out, basedir + dir.getName() + "/"); } } /** * * * @param file * @param out zip * @param basedir : “” / */ private void compressFile(File file, ZipOutputStream out, String basedir) { if (!file.exists()) { System.out.println(" , !"); return; } try { BufferedInputStream bis = new BufferedInputStream( new FileInputStream(file)); ZipEntry entry = new ZipEntry(basedir + file.getName()); out.putNextEntry(entry); int count; byte data[] = new byte[BUFFER]; while ((count = bis.read(data, 0, BUFFER)) != -1) { out.write(data, 0, count); } bis.close(); } catch (Exception e) { throw new RuntimeException(e); } } /** * *

* , * : * zip : a.zip * : D:\1\ * :a.zip 1 *

* * @param srcPathNameOrFileName */
public void compressContainShell(String srcPathNameOrFileName) { File file = new File(srcPathNameOrFileName); if (!file.exists()) { throw new RuntimeException(srcPathNameOrFileName + " !"); } try { FileOutputStream fileOutputStream = new FileOutputStream(zipFile); CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32()); ZipOutputStream out = new ZipOutputStream(cos); String basedir = ""; compress(file, out, basedir); out.close(); } catch (Exception e) { throw new RuntimeException(e); } } //-------------------------------------------- -------------------------------------------- public static void main(String[] args) { ZipCompressorUtil zc = new ZipCompressorUtil("D:/resource.zip"); String b = "D:\\1\\"; // // String b = "D:\\1.jpg"; zc.compressNotContainShell(b); // zc.compress("D:\\1.jpg", "D:\\3.jpeg", "D:\\4.jpg", b); } }