生成本地zip压缩包工具类

来源:互联网 发布:网络博客行业 编辑:程序博客网 时间:2024/06/01 14:31

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"));    }}


原创粉丝点击