| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package cn.com.goldenwater.dcproj.util;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import java.io.BufferedInputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.util.zip.ZipEntry;
- import java.util.zip.ZipOutputStream;
- public class FileUtil {
- private static Logger log = LoggerFactory.getLogger(FileUtil.class);
- /**
- * 压缩文件
- *
- * @param sourceFilePath 源文件路径
- * @param zipFilePath 压缩后文件存储路径
- * @param zipFilename 压缩文件名
- */
- public static void compressToZip(String sourceFilePath, String zipFilePath, String zipFilename) {
- File sourceFile = new File(sourceFilePath);
- File zipPath = new File(zipFilePath);
- if (!zipPath.exists()) {
- zipPath.mkdirs();
- }
- File zipFile = new File(zipPath + File.separator + zipFilename);
- try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile))) {
- writeZip(sourceFile, "", zos);
- //文件压缩完成后,删除被压缩文件
- boolean flag = deleteDir(sourceFile);
- log.info("删除被压缩文件[" + sourceFile + "]标志:{}", flag);
- } catch (Exception e) {
- e.printStackTrace();
- throw new RuntimeException(e.getMessage(), e.getCause());
- }
- }
- /**
- * 遍历所有文件,压缩
- *
- * @param file 源文件目录
- * @param parentPath 压缩文件目录
- * @param zos 文件流
- */
- public static void writeZip(File file, String parentPath, ZipOutputStream zos) {
- if (file.isDirectory()) {
- //目录
- parentPath += file.getName() + File.separator;
- File[] files = file.listFiles();
- if (files != null) {
- for (File f : files) {
- writeZip(f, parentPath, zos);
- }
- }
- } else {
- //文件
- try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) {
- //指定zip文件夹
- ZipEntry zipEntry = new ZipEntry(parentPath + file.getName());
- zos.putNextEntry(zipEntry);
- int len;
- byte[] buffer = new byte[1024 * 10];
- while ((len = bis.read(buffer, 0, buffer.length)) != -1) {
- zos.write(buffer, 0, len);
- zos.flush();
- }
- } catch (Exception e) {
- e.printStackTrace();
- throw new RuntimeException(e.getMessage(), e.getCause());
- }
- }
- }
- /**
- * 删除文件夹
- *
- * @param dir
- * @return
- */
- public static boolean deleteDir(File dir) {
- if (dir.isDirectory()) {
- String[] children = dir.list();
- if (children != null) {
- for (String child : children) {
- boolean success = deleteDir(new File(dir, child));
- if (!success) {
- return false;
- }
- }
- }
- }
- //删除空文件夹
- return dir.delete();
- }
- }
|