java 解压缩zip文件

//java处理zip文件 已解决中文问题

作者:huivip(孙来会)

测试环境:win2000+jdk1.4+jb2006

 import java.io.*;
import java.util.Enumeration;
//import java.util.zip.*;
import org.apache.tools.zip.*;
public class Test {

//解压文件
  public static void extZipFileList(String zipFileName, String extPlace) {
    try {
      ZipFile zipfile=new ZipFile(zipFileName);
      InputStream in = null;
      ZipEntry entry = null;
      File files = new File(extPlace);
      if (files.exists() == false) {
        files.mkdirs();
      }
      String inpath = extPlace;
      Enumeration ea=zipfile.getEntries();
      while ( ea.hasMoreElements()) {
        entry=(ZipEntry)ea.nextElement();
        String entryName = entry.getName();
        if (entry.isDirectory()) {
          File file = new File(extPlace + entryName);
          file.mkdirs();
          inpath += "/" + file.getName();
        }
        else {
          File newfile=new File(extPlace+File.separator+entryName.substring(0,entryName.lastIndexOf("/")+1));
          newfile.mkdirs();
          newfile=new File(extPlace+File.separator+entryName);
          newfile.createNewFile();
          FileOutputStream os = new FileOutputStream(newfile);
          in=zipfile.getInputStream(entry);
          byte[] buf = new byte[1024];
          int len;
          while ( (len = in.read(buf)) > 0) {
            os.write(buf, 0, len);
          }
          os.close();
          in.close();
        }
      }
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }

//压缩文件

 public static String CreateZip(ArrayList files) throws IOException {
    double k = Math.random();
    String filename = Double.toString(k) + ".zip";
    ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(filename));
    ZipEntry ze = null;
    byte[] buf = new byte[1024];
    int readLen = 0;
    for (int i = 0; i < files.size(); i++) {
      File f = new File( (String) files.get(i));
      //创建一个ZipEntry,并设置Name和其它的一些属性
      //String fn=new String(((String)files.get(i)).getBytes("GBK"),"8859_1");
      ze = new ZipEntry(f.getName());
      ze.setSize(f.length());
      ze.setTime(f.lastModified());
//将ZipEntry加到zos中,再写入实际的文件内容
      zos.putNextEntry(ze);
      InputStream is = new BufferedInputStream(new FileInputStream(f));
      while ( (readLen = is.read(buf, 0, 1024)) != -1) {
        zos.write(buf, 0, readLen);
      }
      is.close();
      //System.out.println("   done...");
    }
    zos.close();
//  压缩后删除原文件
//      for (int i = 0; i < files.size(); i++) {
//        File f = new File( (String) files.get(i));
//        if (f.exists()) {
//          f.delete();
//        }
//      }
    return  filename;

  }

  public static String CreateZip(String[] files) throws IOException {

    //List fileList = getSubFiles(new File(baseDir));
    double k = Math.random();

    String filename = Double.toString(k) + ".zip";
    ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(filename));
    ZipEntry ze = null;
    byte[] buf = new byte[1024];
    int readLen = 0;
    for (int i = 0; i < files.length; i++) {
      File f = new File( (String) files[i]);
      //创建一个ZipEntry,并设置Name和其它的一些属性
      ze = new ZipEntry(f.getName());
      ze.setSize(f.length());
      ze.setTime(f.lastModified());
//将ZipEntry加到zos中,再写入实际的文件内容
      zos.putNextEntry(ze);
      InputStream is = new BufferedInputStream(new FileInputStream(f));
      while ( (readLen = is.read(buf, 0, 1024)) != -1) {
        zos.write(buf, 0, readLen);
      }
      is.close();
      //System.out.println("   done...");
    }
    zos.close();
//  压缩后删除原文件
//      for (int i = 0; i < files.length; i++) {
//        File f = new File( (String) files[i]);
//        if (f.exists()) {
//          f.delete();
//        }
//      }
    return filename;
  }
  public static void main(String[] args) {
    extZipFileList("/temp/x.zip", "/temp/50002/");
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值