| |
写了一个用java.util.zip创建和读取zip文件的类 跟大家分享一下 里面用了递归调用 呵呵 近期用了不少递归调用!有空总结一下! /** testzip.java coding by serol luo. rollingpig@163.com 2003/07/03 http://www.chinaunix.net/forum/viewforum.php?f=26 转载请保留此信息 */ import java.util.*; import java.util.zip.*; import java.io.*; class testzip { public void zip(string zipfilename,string inputfile)throws exception{ zip(zipfilename,new file(inputfile)); } public void zip(string zipfilename,file inputfile)throws exception{ zipoutputstream out=new zipoutputstream(new fileoutputstream(zipfilename)); zip(out,inputfile,""); system.out.println("zip done"); out.close(); } public void unzip(string zipfilename,string outputdirectory)throws exception{ zipinputstream in=new zipinputstream(new fileinputstream(zipfilename)); zipentry z; while ((z=in.getnextentry() )!= null) { system.out.println("unziping "+z.getname()); if (z.isdirectory()) { string name=z.getname(); name=name.substring(0,name.length()-1); file f=new file(outputdirectory+file.separator+name); f.mkdir(); system.out.println("mkdir "+outputdirectory+file.separator+name); } else{ file f=new file(outputdirectory+file.separator+z.getname()); f.createnewfile(); fileoutputstream out=new fileoutputstream(f); int b; while ((b=in.read()) != -1) out.write(b); out.close(); } } in.close(); } public void zip(zipoutputstream out,file f,string base)throws exception{ system.out.println("zipping "+f.getname()); if (f.isdirectory()) { file[] fl=f.listfiles(); out.putnextentry(new zipentry(base+"/")); base=base.length()==0?"":base+"/"; for (int i=0;i<fl.length ;i++ ) { zip(out,fl[i],base+fl[i].getname()); } } else { out.putnextentry(new zipentry(base)); fileinputstream in=new fileinputstream(f); int b; while ((b=in.read()) != -1) out.write(b); in.close(); } } public static void main(string[] args) { try{ testzip t=new testzip(); t.zip("c://test.zip","c://test"); t.unzip("c://test.zip","c://test2"); } catch(exception e){e.printstacktrace(system.out);} } }
|
|