1:
package com.test.ftpUtil;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import com.yeepay.g3.utils.common.log.Logger;
import com.yeepay.g3.utils.common.log.LoggerFactory;
public class ZipUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(ZipUtil.class);
/**
* 压缩文件
*
* @param sourceFilePath 要压缩文件路径,要压缩文件路径必须存在
* @param zipFilePath zip包存放路径,存放压缩路径可以不存在
* @param fileName zip包名
* @return
*/
@SuppressWarnings("resource")
public static boolean fileToZip(String sourceFilePath, String zipFilePath, String fileName) {
File sourceFile = new File(sourceFilePath);
FileInputStream fis;
BufferedInputStream bis = null;
FileOutputStream fos;
ZipOutputStream zos = null;
if (!sourceFile.exists()) {
LOGGER.error("打包目录不存在!");
return false;
} else {
try {
FileUtil.checkFolder(zipFilePath);
File zipFile = new File(zipFilePath + "/" + fileName + ".zip");
if (zipFile.exists()) {
LOGGER.info("[{}]目录下已存在名字为:[{}].zip打包文件, 删除!", zipFilePath, fileName);
zipFile.delete();
}
File[] sourceFiles = sourceFile.listFiles();
if (null == sourceFiles || sourceFiles.length < 1) {
LOGGER.info("待压缩的文件目录{},里面不存在文件,无需压缩", sourceFilePath);
return false;
} else {
fos = new FileOutputStream(zipFile);
zos = new ZipOutputStream(new BufferedOutputStream(fos));
byte[] bufs = new byte[1024 * 10];
for (int i = 0; i < sourceFiles.length; i++) {
if (sourceFiles[i].isFile()) {
//创建ZIP实体,并添加进压缩包
ZipEntry zipEntry = new ZipEntry(sourceFiles[i].getName());
zos.putNextEntry(zipEntry);
//读取待压缩的文件并写进压缩包里
fis = new FileInputStream(sourceFiles[i]);
bis = new BufferedInputStream(fis, 1024 * 10);
int read = 0;
while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) {
zos.write(bufs, 0, read);
}
}
}
}
} catch (Throwable e) {
LOGGER.error("压缩异常", e);
return false;
} finally {
//关闭流
try {
if (null != bis) bis.close();
if (null != zos) zos.close();
} catch (IOException e) {
LOGGER.error("压缩异常", e);
return false;
}
}
}
return true;
}
public static void main(String[] args) {
//System.out.println(fileToZip("/Users/yp-tc-m-7129/2017","/Users/yp-tc-m-7129/2018","aaa"));
System.out.println(fileToZip("/Users/yp-tc-m-7129/2017","/Users/yp-tc-m-7129/2019/a","aaa"));
}
}