java zip和gzip_java-a实现压缩与解压缩(zip、gzip)

packagecom.jre.util.zip;importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.Enumeration;importjava.util.zip.ZipEntry;importjava.util.zip.ZipFile;importjava.util.zip.ZipInputStream;importjava.util.zip.ZipOutputStream;importcom.jre.io.UtilsIoJre;/*** zip文件处理(压缩处理时通过windows系统压缩的由于编码不是utf8的所以将导致中文抛出异常的情况)

*@authorhuage

**/

public classUtilsZipJre {public static voidmain(String[] args) {

zipFileExtract("C:\\Users\\huage\\Desktop\\test\\111\\111.zip","C:\\Users\\huage\\Desktop\\test\\test");//zipDecompressingExtract("C:\\Users\\huage\\Desktop\\test\\111\\111.zip","C:\\Users\\huage\\Desktop\\test\\test");//zipCompressingExtract("C:\\Users\\huage\\Desktop\\test\\111\\test.zip",new File("C:\\Users\\huage\\Desktop\\test\\test"));

}/*** 解压

*@parampath

*@parampathExtract*/

public static voidzipFileExtract(String path, String pathExtract){

ZipFile zipfile= null;try{

zipfile= newZipFile(path);

Enumeration entries = (Enumeration)zipfile.entries();if( entries!=null){

ZipEntry entry ;

File file;

BufferedInputStream bis= null;while( entries.hasMoreElements()){

entry=entries.nextElement();if(entry.isDirectory())continue;

file=newFile(pathExtract,entry.getName());if(!file.exists()){

(newFile(file.getParent())).mkdirs();

}

UtilsIoJre.converWriteIO(bis, file);//System.out.println(fout+"解压成功");

}

}

}catch(IOException e) {

e.printStackTrace();

}catch(Exception e) {

e.printStackTrace();

}finally{

UtilsIoJre.closeIO(zipfile);

}

}/*** zip解压(本地)(官方自带zip解压无法处理中文)

*

*@parampath

* :zip文件地址

*@parampathExtract

* :解压地址*/

public static voidzipDecompressingExtract(String path, String pathExtract) {

ZipInputStream zipinput= null;

BufferedInputStream bininput= null;try{

zipinput= new ZipInputStream(newFileInputStream(path));

bininput= newBufferedInputStream(zipinput);

ZipEntry entry ;

File fout= null;while ((entry = zipinput.getNextEntry()) != null) {if(entry.isDirectory())continue;

fout=newFile(pathExtract,entry.getName());if(!fout.exists()){

(newFile(fout.getParent())).mkdirs();

}

UtilsIoJre.converWriteIO(bininput, fout);//System.out.println(fout+"解压成功");

}

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(Exception e) {

e.printStackTrace();

}finally{

UtilsIoJre.closeIO(bininput,zipinput);

}

System.out.println("解压完成");

}/*** zip压缩(本地)

*

*@paramzipFileName

*@paraminputFile

*@throwsException*/

public static voidzipCompressingExtract(String zipFileName, File inputFile) {

ZipOutputStream out= null;

BufferedOutputStream bo= null;try{

out= new ZipOutputStream(newFileOutputStream(zipFileName));

bo= newBufferedOutputStream(out);

zipCompressing(out, inputFile, bo);

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(Exception e) {

e.printStackTrace();

}finally{

UtilsIoJre.closeIO(bo,out);

}

System.out.println("压缩完成");

}/*** zip压缩

*

*@paramout

*@paramfile

*@parambase

*@parambo

*@throwsException*/

private static void zipCompressing(ZipOutputStream out, File file, BufferedOutputStream bo) throwsException {if(file.isDirectory()) {

File[] fl=file.listFiles();if (fl.length == 0) {

out.putNextEntry(newZipEntry(file.getName()));

}for (int i = 0; i < fl.length; i++) {

zipCompressing(out, fl[i], bo);

}

}else{

out.putNextEntry(newZipEntry(file.getName() ));

UtilsIoJre.converReadIO(bo, file);

}

}

}packagecom.jre.io;importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;/*** io流处理

*@authorhuage

**/

public classUtilsIoJre {/*** 将file写入BufferedOutputStream中

*@parambo

*@paramfile

*@throwsException*/

public static void converReadIO(BufferedOutputStream bo,File file) throwsException{

FileInputStream in= newFileInputStream(file);

BufferedInputStream bi= newBufferedInputStream(in);intb;while ((b = in.read()) != -1) {

bo.write(b);

}

closeIO(bi,in);

bo.flush();//清空缓存

}/*** 将BufferedInputStream写入file中

*@parambo

*@paramfile

*@throwsException*/

public static void converWriteIO(BufferedInputStream bininput,File file) throwsException{

FileOutputStream out= newFileOutputStream(file);

BufferedOutputStream bout= newBufferedOutputStream(out);intb;while ((b = bininput.read()) != -1) {

bout.write(b);

}

closeIO(bout,out);

bout.flush();//清空缓存

}/*** 关闭io

*@paramcl*/

public static voidcloseIO(AutoCloseable... cl){if( cl == null || cl.length == 0 )return;for(AutoCloseable c : cl) {try{

c.close();

}catch(Exception e) {

e.printStackTrace();

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值