首页 > 代码库 > 一个zip压缩类,欢迎吐槽
一个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; }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。