龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

一个用java.util.zip创建和读取zip文件的类,可以操作目录

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
写了一个用Java.util.zip创建和读取zip文件的类 跟大家分享一下 里面用了递归调用 呵呵 近期用了不少递归调用!有空总结一下! /** TestZip.java coding by Serol Luo. rollingpig@163.com 2003/07/03 http

  写了一个用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: est.zip","c: est");
  t.unzip("c: est.zip","c: est2");
  }
  catch(Exception e){e.printStackTrace(System.out);}
  }
  }
  
精彩图集

赞助商链接