java Zip压缩文件

java Zip
import java.util.*;
import java.util.zip.*;
import java.io.*;
class TestZip
{
 //压缩
 public static void zip(String zipFileName , String inputFile)throws Exception
 {
  File f = new File(inputFile);
  ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName));
  zip(out,f,null);
  System.out.println("zip done");
  out.close();
 }
 
 private static void zip(ZipOutputStream out,File f,String base)throws Exception
 {
  System.out.println("zipping " + f.getAbsolutePath());
  if (f.isDirectory()) {
   File[] fc =f.listFiles();
   if(base!=null)
      out.putNextEntry(new ZipEntry(base+"/"));
   base=base==null?"":base+"/";
   for (int i=0;i<fc.length ;i++ ) {
    zip(out,fc[i],base+fc[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 unzip(String zipFileName,String outputDirectory)throws Exception
 {
  ZipInputStream in=new ZipInputStream(new FileInputStream(zipFileName));
  ZipEntry z;
  while ((z=in.getNextEntry() )!= null)
  {
   String name = z.getName();
   if (z.isDirectory()) {
    name=name.substring(0,name.length()-1);
    File f=new File(outputDirectory+File.separator+name);
    f.mkdir();
    System.out.println("MD "+outputDirectory+File.separator+name);
   }
   else {
    System.out.println("unziping "+z.getName());
    File f=new File(outputDirectory+File.separator+name);
    f.createNewFile();
    FileOutputStream out=new FileOutputStream(f);
    int b;
    while ((b=in.read()) != -1)
    out.write(b);
    out.close();
   }
  }
  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);
  }
 }
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值