zoukankan      html  css  js  c++  java
  • 一个zip压缩类,欢迎吐槽

    package com.utils;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.DataInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.zip.Adler32;
    import java.util.zip.CheckedOutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import com.zte.ums.ems.rrucheck.output.OutputFilesFilter;
    
    public class ZipUtil {
    
        private Logger logger;
        public ZipUtil() {
            logger=LoggerFactory.getLogger(ZipUtil.class);
        }
        public ZipUtil(Logger logger) {
            this.logger=logger;
        }
    
        public String zipAndDelSourceFiles_OMMB(String dir){
            
            String sourceNameRegex="(filename1|filename2)\.csv";
            String targetFileName="zipname.zip";
            String zipFilePath = null;
            try {
                if (zip(dir,sourceNameRegex,targetFileName)) {
                    zipFilePath=new File(dir,targetFileName).getCanonicalPath();
                    FilePathUtil.del(dir, sourceNameRegex);
                    zipFilePath=new File(dir,targetFileName).getCanonicalPath();
                }
            } catch (IOException e) {
                logger.error(e.getMessage());
            }
            return zipFilePath;
        }
        
        public boolean zip(String sourceFilePath,String sourceNameRegex,String targetFileName) throws IOException{
    
            File target=new File(sourceFilePath,targetFileName);
            File dir=target.getParentFile();
            
            File[] sourceFiles=dir.listFiles(new OutputFilesFilter(sourceNameRegex));
    
            return zip(sourceFiles,target);
        }
        
        public boolean zip(File[] sorceFiles,File targetZipFile){
            boolean result = false;
            try {
                FileOutputStream target = new FileOutputStream(targetZipFile);
                CheckedOutputStream cos = new CheckedOutputStream(target,
                        new Adler32());
    
                ZipOutputStream zos = new ZipOutputStream(cos);
    
                BufferedOutputStream out = new BufferedOutputStream(zos);
    
                DataInputStream in = null;
                try {
                    for (File sorceFile : sorceFiles) {
                        zos.putNextEntry(new ZipEntry(sorceFile.getName()));
                        int count;
    
                        in = new DataInputStream(new BufferedInputStream(
                                new FileInputStream(sorceFile)));
    
                        while ((count = in.read()) != -1) {
    
                            out.write(count);
    
                        }
                        out.flush();
                        in.close();
                    }
                } catch (IOException e) {
                    logger.error(e.getMessage());
                } finally {
                    try {
                        out.close();
                    } catch (IOException e) {
                        logger.error(e.getMessage());
                    }
                }
    
                result = true;
    
            } catch (FileNotFoundException e) {
                logger.error(e.getMessage());
            }
            return result;
        }
    }
  • 相关阅读:
    【前端】常用总结(二)
    【Golang】爬虫笔记
    ubuntu16.04安装SSH服务
    windows下配置pytorch环境
    使用VNC连接ubuntu16.4错误Authentication Failure问题
    window使用VNC远程ubuntu16.04
    ubuntu16.04安装nvidia显卡驱动
    python批量读取并显示图片,处理异常。
    将nii文件CT图像更改窗宽窗位之后保存成nii文件
    yaml.load与yaml.dump的用法
  • 原文地址:https://www.cnblogs.com/softidea/p/3811558.html
Copyright © 2011-2022 走看看