JavaSE之压缩zip文件

来源:互联网 发布:c语言编程杨辉三角 编辑:程序博客网 时间:2024/06/07 18:58

java压缩文件需要用的java.util.zip包中的ZipEntry和ZipOutputStream类。

ZipEntry类产生的对象,是用来代表一个ZIP压缩文件内的进入点(entry,感觉像是最终生成的zip文件中的一个目录或具体的文件)。

ZipOutputStream类用来写出ZIP压缩格式的文件,而且支持已压缩和未压缩的进入点(entry,就是已经压缩过的文件和没有压缩过的文件都可以)。

具体看代码:

package com.lsy.file;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;public class MyZip {private void zip(String zipFileName,File inputFile)throws Exception{ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName));System.out.println("压缩中>>>>");zip(out,inputFile,"");out.close();}private void zip(ZipOutputStream out,File f,String base)throws Exception{if(f.isDirectory()){File[] fs=f.listFiles();out.putNextEntry(new ZipEntry(base+"/"));base=base.length()==0?"":base+"/";for(int i=0;i<fs.length;i++){zip(out,fs[i],fs[i].toString().substring(fs[i].toString().indexOf("\\")+1, fs[i].toString().length()));}}else{out.putNextEntry(new ZipEntry(base));FileInputStream in=new FileInputStream(f);int b;System.out.println(">>>"+base+">>>>");while((b=in.read())!=-1){out.write(b);}in.close();}}public static void main(String[] args) {MyZip book=new MyZip();try {book.zip("E:/hello.zip", new File("E:/hello"));System.out.println(">>>>压缩完成!");} catch (Exception e) {e.printStackTrace();}}}


0 0
原创粉丝点击