当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
用java原生api写解压缩
发布时间:2010/12/12 20:11:17 来源:城市学习网 编辑:ziteng
  package com.unis.io;
  import java.io.BufferedInputStream;
  import java.io.BufferedOutputStream;
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.FileOutputStream;
  import java.io.IOException;
  import java.util.zip.ZipEntry;
  import java.util.zip.ZipInputStream;
  public class UnZipUtil {
  private static int BUFFER_SIZE = 2048;
  private static byte[] BUFFER_DATA = new byte[BUFFER_SIZE];
  /**
  *
  * @param src
  *            源文件
  * @param dest
  *            目标目录
  * @throws IOException
  */
  public static void unZip(String src, String dest) throws IOException {
  ZipInputStream zis = null;
  BufferedOutputStream bos = null;
  ZipEntry zn = null;
  // 这里可以判断是否是压缩文件,如果不是抛出自定义异常
  try {
  zis = new ZipInputStream(new BufferedInputStream(
  new FileInputStream(new File(src))));
  while ((zn = zis.getNextEntry()) != null) {
  if (zn.isDirectory()) {
  // 如果条目是目录,并且该目录不存在,创建该目录
  File dir = new File(dest + File.separator + zn.getName());
  if (!dir.exists())
  dir.mkdirs();
  } else {
  // 如果条目是文件(如果父路径不存在,就创建父路径),将条目从zip流中读出,并写出文件输出流
  File f = new File(dest + File.separator + zn.getName());
  File dir = f.getParentFile();
  if (!dir.exists())
  dir.mkdirs();
  bos = new BufferedOutputStream(new FileOutputStream(f));
  int i = 0;
  while ((i = zis.read(BUFFER_DATA)) != -1) {
  bos.write(BUFFER_DATA, 0, i);
  }
  }
  }
  } finally {
  if (bos != null)
  bos.close();
  if (zis != null)
  zis.close();
  }
  }
  public static void main(String[] args) {
  try {
  unZip("E:/java/a.zip", "E:/sql");
  } catch (IOException e) {
  e.printStackTrace();
  }
  }
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved