Java压缩解压缩工具类
程序员文章站
2024-03-03 23:53:28
本文实例为大家分享了java压缩解压缩工具类的具体代码,供大家参考,具体内容如下
package com.wdy.tools.utils.pressuitl;...
本文实例为大家分享了java压缩解压缩工具类的具体代码,供大家参考,具体内容如下
package com.wdy.tools.utils.pressuitl; import java.io.bufferedinputstream; import java.io.bufferedoutputstream; import java.io.file; import java.io.fileinputstream; import java.io.filenotfoundexception; import java.io.fileoutputstream; import java.io.ioexception; import java.io.inputstream; import java.io.outputstream; import java.util.zip.zipentry; import java.util.zip.zipfile; import java.util.zip.zipinputstream; import java.util.zip.zipoutputstream; import org.apache.commons.logging.log; import com.wdy.tools.utils.logutil; /** * 压缩/解压缩工具类(zip格式) * * @author wdy * @date 2016-08-23 */ public class pressutil { private static final log log = logutil.getlog(pressutil.class); public static void main(string[] args) { // pressutil.zipmultifile("d:\\nwp_trans\\nwp_h\\", "d:\\nwp_trans\\nwp_h\\wdy.zip"); string sourcefilepath = "d:\\nwp_trans\\nwp_h\\"; string zipfilepath = "d:\\nwp_trans\\nwp_h\\"; string filename = "wdy"; boolean flag = pressutil.filetozip(sourcefilepath, zipfilepath, filename); if(flag){ log.info("文件打包成功!"); }else{ log.info("文件打包失败!"); } } /** * 将存放在sourcefilepath目录下的源文件,打包成filename名称的zip文件,并存放到zipfilepath路径下 * @param sourcefilepath :待压缩的文件路径 * @param zipfilepath :压缩后存放路径 * @param filename :压缩后文件的名称(不包括扩展名) * @return */ @suppresswarnings("resource") public static boolean filetozip(string sourcefilepath,string zipfilepath,string filename){ boolean flag = false; file sourcefile = new file(sourcefilepath); fileinputstream fis = null; bufferedinputstream bis = null; fileoutputstream fos = null; zipoutputstream zos = null; if(sourcefile.exists() == false){ log.info("待压缩的文件目录:"+sourcefilepath+"不存在."); }else{ try { file zipfile = new file(zipfilepath + "/" + filename +".zip"); if(zipfile.exists()){ log.info(zipfilepath + "目录下存在名字为:" + filename +".zip" +"打包文件."); }else{ file[] sourcefiles = sourcefile.listfiles(); if(null == sourcefiles || sourcefiles.length<1){ log.info("待压缩的文件目录:" + sourcefilepath + "里面不存在文件,无需压缩."); }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++){ //创建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); } } flag = true; } } } catch (filenotfoundexception e) { e.printstacktrace(); throw new runtimeexception(e); } catch (ioexception e) { e.printstacktrace(); throw new runtimeexception(e); } finally{ //关闭流 try { if(null != bis) bis.close(); if(null != zos) zos.close(); } catch (ioexception e) { e.printstacktrace(); throw new runtimeexception(e); } } } return flag; } /** * 压缩单个文件 * @param filepath 要被压缩的文件的全路径,包含文件名d:/hello.txt * @param zippath 压缩后的全路径,包含文件名d:/hello.zip */ public static void ziponefile(string filepath, string zippath) { try { file file = new file(filepath); file zipfile = new file(zippath); inputstream input = new fileinputstream(file); zipoutputstream zipout = new zipoutputstream(new fileoutputstream(zipfile)); zipout.putnextentry(new zipentry(file.getname())); int temp = 0; while ((temp = input.read()) != -1) { zipout.write(temp); } input.close(); zipout.close(); } catch (exception e) { e.printstacktrace(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。