写了一个用java.util.zip创建和读取zip文件的类 跟大家分享一下 里面用了递归调用
呵呵 近期用了不少递归调用!有空总结一下!
[code:1:c8a71e86d8] /** 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);} } }[/code:1:c8a71e86d8]
|