Java如何实现文件压缩为zip和解压zip压缩包(java,zip,开发技术)

时间:2024-05-03 15:09:27 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

压缩成.zip

代码如下:

/***压缩成ZIP**@paramsrcDir压缩文件夹路径*@paramout压缩文件输出流*@throwsRuntimeException压缩失败会抛出运行时异常*/publicstaticvoidtoZip(StringsrcDir,OutputStreamout)throwsRuntimeException{longstart=System.currentTimeMillis();ZipOutputStreamzos=null;try{zos=newZipOutputStream(out);FilesourceFile=newFile(srcDir);compress(sourceFile,zos,sourceFile.getName(),false);longend=System.currentTimeMillis();System.out.println("压缩完成,耗时:"+(end-start)+"ms");}catch(Exceptione){thrownewRuntimeException("ziperrorfromZipUtils",e);}finally{if(zos!=null){try{zos.close();}catch(IOExceptione){e.printStackTrace();}}}}/***递归压缩方法**@paramsourceFile源文件*@paramzoszip输出流*@paramname压缩后的名称*@paramKeepDirStructure是否保留原来的目录结构,true:保留目录结构;*<p>*false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败)*@throwsException*/privatestaticvoidcompress(FilesourceFile,ZipOutputStreamzos,Stringname,booleanKeepDirStructure)throwsException{byte[]buf=newbyte[BUFFER_SIZE];if(sourceFile.isFile()){//向zip输出流中添加一个zip实体,构造器中name为zip实体的文件的名字zos.putNextEntry(newZipEntry(name));//copy文件到zip输出流中intlen;FileInputStreamin=newFileInputStream(sourceFile);while((len=in.read(buf))!=-1){zos.write(buf,0,len);}//Completetheentryzos.closeEntry();in.close();}else{File[]listFiles=sourceFile.listFiles();if(listFiles==null||listFiles.length==0){//需要保留原来的文件结构时,需要对空文件夹进行处理if(KeepDirStructure){//空文件夹的处理zos.putNextEntry(newZipEntry(name+"/"));//没有文件,不需要文件的copyzos.closeEntry();}}else{for(Filefile:listFiles){//判断是否需要保留原来的文件结构if(KeepDirStructure){//注意:file.getName()前面需要带上父文件夹的名字加一斜杠,//不然最后压缩包中就不能保留原来的文件结构,即:所有文件都跑到压缩包根目录下了compress(file,zos,name+"/"+file.getName(),KeepDirStructure);}else{compress(file,zos,file.getName(),KeepDirStructure);}}}}}

测试验证代码:

/** *测试打包本地的Navicat,输出为zip文件 *@throwsException */@Testpublicvoidtest()throwsException{//Navicat路径StringinDir="E:\\developer\\Navicat";//打包后输出路径StringoutDir="E:\\developer\\NavicatZip\\Navicat.zip";OutputStreamfileOutputStream=newFileOutputStream(newFile(outDir));ZipUtils.toZip(inDir,fileOutputStream);}

打包前后的文件如下:

Java如何实现文件压缩为zip和解压zip压缩包

Java如何实现文件压缩为zip和解压zip压缩包

解压.zip

代码如下:

/***解压zip文件到指定目录*@paramfileZip*@parampath_to_dest*@throwsIOException*/publicstaticvoidreadZip(StringfileZip,Stringpath_to_dest)throwsIOException{try(FileInputStreamfis=newFileInputStream(fileZip);ZipInputStreamzis=newZipInputStream(newBufferedInputStream(fis))){ZipEntryentry;//从ZipInputStream读取每个条目,直到没有//发现更多条目,返回值为空//getNextEntry()方法。while((entry=zis.getNextEntry())!=null){System.out.println("Unzipping:"+entry.getName());intsize;byte[]buffer=newbyte[2048];FilefileOut=newFile(path_to_dest+"\\"+entry.getName());try(FileOutputStreamfos=newFileOutputStream(fileOut);BufferedOutputStreambos=newBufferedOutputStream(fos,buffer.length)){while((size=zis.read(buffer,0,buffer.length))!=-1){bos.write(buffer,0,size);}bos.flush();}}}catch(IOExceptione){e.printStackTrace();}}

测试验证代码:

/***测试解压本地zip文件*@throwsException*/@TestpublicvoidreadZip()throwsException{//解压后路径Stringpath_to_dest="E:\\developer\\NavicatUnzip";//zip文件路径StringfileZip="E:\\developer\\NavicatZip\\Navicat.zip";ZipUtils.readZip(fileZip,path_to_dest);}

解压前后的文件如下:

Java如何实现文件压缩为zip和解压zip压缩包

Java如何实现文件压缩为zip和解压zip压缩包

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Java如何实现文件压缩为zip和解压zip压缩包的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Python爬虫怎么实现搭建代理ip池下一篇:

6 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18