简介
平时我们都是使用WinZip,2345好压等软件来操作zip文件,java也提供了ZipOutputStream,ZipEntry等API创建和解析zip文件。
压缩
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Objects;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Client {
public static void main(String[] args) {
compressFileToZip("D:\\original_compute\\sku-20140802",
"D:\\original_compute\\sku-20140802.zip");
}
/**
* 读取文件内容并压缩,既支持文件也支持文件夹
*
* @param filePath 文件路径
*/
private static void compressFileToZip(String filePath,
String zipFilePath) {
try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFilePath))) {
//递归的压缩文件夹和文件
doCompress("", filePath, zos);
//必须
zos.finish();
} catch (Exception e) {
e.printStackTrace();
}
}
private static void doCompress(String parentFilePath, String filePath, ZipOutputStream zos) {
File sourceFile = new File(filePath);
if (!sourceFile.exists()) {
return;
}
String zipEntryName = parentFilePath + "/" + sourceFile.getName();
if (parentFilePath.isEmpty()) {
zipEntryName = sourceFile.getName();
}
if (sourceFile.isDirectory()) {
File[] childFiles = sourceFile.listFiles();
if (Objects.isNull(chi