工具类1:既可以压缩指定的文件夹,也可以压缩指定的文件
package com.zxhzn.wellLid.common;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Ziputils {
private static final int BUFFER_SIZE = 2 * 1024;
public static void toZip(String srcDir, OutputStream out, boolean KeepDirStructure)
throws RuntimeException {
long start = System.currentTimeMillis();
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(out);
File sourceFile = new File(srcDir);
compress(sourceFile, zos, sourceFile.getName(), KeepDirStructure);
long end = System.currentTimeMillis();
System.out.println("压缩完成,耗时:" + (end - start) + " ms");
} catch (Exception e) {
throw new RuntimeException("zip error from ZipUtils", e);
} finally {
if (zos != null) {
try {
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void toZip(List<File> srcFiles, OutputStream out) throws RuntimeException {
long start = System.currentTimeMillis();
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(out);
for (File srcFile : srcFiles) {
byte[] buf = new byte[BUFFER_SIZE];
zos.putNextEntry(new ZipEntry(srcFile.getName()));
int len;
FileInputStream in = new FileInputStream(srcFile);
while ((len = in.read(buf)) != -1) {
zos.write(buf, 0, len);
}
zos.closeEntry();
in.close();
}
long end = System.currentTimeMillis();
System.out.println("压缩完成,耗时:" + (end - start) + " ms");
} catch (Exception e) {
throw new RuntimeException("zip error from ZipUtils", e);
} finally {
if (zos != null) {
try {
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private static void compress(File sourceFile, ZipOutputStream zos, String name,
boolean KeepDirStructure) throws Exception {
byte[] buf = new byte[BUFFER_SIZE];
if (sourceFile.isFile()) {
zos.putNextEntry(new ZipEntry(name));
int len;
FileInputStream in = new FileInputStream(sourceFile);
while ((len = in.read(buf)) != -1) {
zos.write(buf, 0, len);
}
zos.closeEntry();
in.close();
} else {
File[] listFiles = sourceFile.listFiles();
if (listFiles == null || listFiles.length == 0) {
if (KeepDirStructure) {
zos.putNextEntry(new ZipEntry(name + "/"));
zos.closeEntry();
}
} else {
for (File file : listFiles) {
if (KeepDirStructure) {
compress(file, zos, name + "/" + file.getName(), KeepDirStructure);
} else {
compress(file, zos, file.getName(), KeepDirStructure);
}
}
}
}
}
public static void main(String[] args) throws Exception {
FileOutputStream fos1 = new FileOutputStream(new File("E:\\GitIdeaProject\\wellLidnew\\wellLid-ext\\QrCodeLid\\target\\QrCodeLid\\qrcodeimagezip\\dd.zip"));
Ziputils.toZip("E:\\GitIdeaProject\\wellLidnew\\wellLid-ext\\QrCodeLid\\target\\QrCodeLid\\qrcodeimage", fos1, true);
List<File> fileList = new ArrayList<>();
fileList.add(new File("E:\\GitIdeaProject\\wellLidnew\\wellLid-ext\\QrCodeLid\\target\\QrCodeLid\\qrcodeimage\\207.jpg"));
fileList.add(new File("E:\\GitIdeaProject\\wellLidnew\\wellLid-ext\\QrCodeLid\\target\\QrCodeLid\\qrcodeimage\\463.jpg"));
fileList.add(new File("E:\\GitIdeaProject\\wellLidnew\\wellLid-ext\\QrCodeLid\\target\\QrCodeLid\\qrcodeimage\\813.jpg"));
FileOutputStream fos2 = new FileOutputStream(new File("E:\\GitIdeaProject\\wellLidnew\\wellLid-ext\\QrCodeLid\\target\\QrCodeLid\\qrcodeimagezip\\mytest02.zip"));
Ziputils.toZip(fileList, fos2);
}
}
工具类2:压缩指定的文件夹下的所有文件
package com.zxhzn.wellLid.common;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Ziputils {
private static final int BUFFER_SIZE = 2 * 1024;
public static void toZip(String srcDir, OutputStream out, boolean KeepDirStructure)
throws RuntimeException {
long start = System.currentTimeMillis();
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(out);
File sourceFile = new File(srcDir);
compress(sourceFile, zos, sourceFile.getName(), KeepDirStructure);
long end = System.currentTimeMillis();
System.out.println("压缩完成,耗时:" + (end - start) + " ms");
} catch (Exception e) {
throw new RuntimeException("zip error from ZipUtils", e);
} finally {
if (zos != null) {
try {
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void toZip(List<File> srcFiles, OutputStream out) throws RuntimeException {
long start = System.currentTimeMillis();
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(out);
for (File srcFile : srcFiles) {
byte[] buf = new byte[BUFFER_SIZE];
zos.putNextEntry(new ZipEntry(srcFile.getName()));
int len;
FileInputStream in = new FileInputStream(srcFile);
while ((len = in.read(buf)) != -1) {
zos.write(buf, 0, len);
}
zos.closeEntry();
in.close();
}
long end = System.currentTimeMillis();
System.out.println("压缩完成,耗时:" + (end - start) + " ms");
} catch (Exception e) {
throw new RuntimeException("zip error from ZipUtils", e);
} finally {
if (zos != null) {
try {
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private static void compress(File sourceFile, ZipOutputStream zos, String name,
boolean KeepDirStructure) throws Exception {
byte[] buf = new byte[BUFFER_SIZE];
if (sourceFile.isFile()) {
zos.putNextEntry(new ZipEntry(name));
int len;
FileInputStream in = new FileInputStream(sourceFile);
while ((len = in.read(buf)) != -1) {
zos.write(buf, 0, len);
}
zos.closeEntry();
in.close();
} else {
File[] listFiles = sourceFile.listFiles();
if (listFiles == null || listFiles.length == 0) {
if (KeepDirStructure) {
zos.putNextEntry(new ZipEntry(name + "/"));
zos.closeEntry();
}
} else {
for (File file : listFiles) {
if (KeepDirStructure) {
compress(file, zos, name + "/" + file.getName(), KeepDirStructure);
} else {
compress(file, zos, file.getName(), KeepDirStructure);
}
}
}
}
}
public static void main(String[] args) throws Exception {
FileOutputStream fos1 = new FileOutputStream(new File("E:\\GitIdeaProject\\wellLidnew\\wellLid-ext\\QrCodeLid\\target\\QrCodeLid\\qrcodeimagezip\\dd.zip"));
Ziputils.toZip("E:\\GitIdeaProject\\wellLidnew\\wellLid-ext\\QrCodeLid\\target\\QrCodeLid\\qrcodeimage", fos1, true);
List<File> fileList = new ArrayList<>();
fileList.add(new File("E:\\GitIdeaProject\\wellLidnew\\wellLid-ext\\QrCodeLid\\target\\QrCodeLid\\qrcodeimage\\207.jpg"));
fileList.add(new File("E:\\GitIdeaProject\\wellLidnew\\wellLid-ext\\QrCodeLid\\target\\QrCodeLid\\qrcodeimage\\463.jpg"));
fileList.add(new File("E:\\GitIdeaProject\\wellLidnew\\wellLid-ext\\QrCodeLid\\target\\QrCodeLid\\qrcodeimage\\813.jpg"));
FileOutputStream fos2 = new FileOutputStream(new File("E:\\GitIdeaProject\\wellLidnew\\wellLid-ext\\QrCodeLid\\target\\QrCodeLid\\qrcodeimagezip\\mytest02.zip"));
Ziputils.toZip(fileList, fos2);
}
}