1.情景展示
java实现将文件夹进行压缩打包的功能及在线解压功能
2.解决方案
方式一:压缩、解压zip
准备工作:slf4j-api.jar
org.slf4j
slf4j-api
1.7.25
如果不需要日志记录,则可以把log去掉。
导入
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.charset.Charset;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
压缩成zip
/**
* 文件压缩、解压工具类
*/
public class ZipUtils {
private static final int BUFFER_SIZE = 2 * 1024;
/**
* 是否保留原来的目录结构
* true: 保留目录结构;
* false: 所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败)
*/
private static final boolean KeepDirStructure = true;
private static final Logger log = LoggerFactory.getLogger(ZipUtils.class);
public static void main(String[] args) {
try {
//toZip("D:\\apache-maven-3.5.3\\maven中央仓库-jar下载", "D:\\apache-maven-3.5.3\\maven中央仓库-jar下载.zip",true);
unZipFiles("D:\\\\apache-maven-3.5.3\\\\maven中央仓库-jar下载.zip","D:\\apache-maven-3.5.3\\maven中央仓库-jar下载");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 压缩成ZIP
* @param srcDir 压缩 文件/文件夹 路径
* @param outPathFile 压缩 文件/文件夹 输出路径+文件名 D:/xx.zip
* @param isDelSrcFile 是否删除原文件: 压缩前文件
*/
public static void toZip(String srcDir, String outPathFile,boolean isDelSrcFile) throws Exception {
long start = System.currentTimeMillis();
FileOutputStream out = null;
ZipOutputStream zos = null;
try {
out = new FileOu