pack and unpack

package test;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

public class ZipFloder {

 private static int i;

 public static void main(String args[]) throws IOException {
  unpack();

 }

 private static void unpack() throws IOException {
  // TODO Auto-generated method stub
  String compress = "nutch-0.9.tar.gz";// zip压缩文件

  String decompression = "/f1";// 解压路径

  java.io.File dir = new java.io.File(decompression);

  java.util.zip.ZipFile zf = new java.util.zip.ZipFile(compress);

  java.util.Enumeration enumer = zf.entries();

  while (enumer.hasMoreElements()) {

   java.util.zip.ZipEntry ze = (java.util.zip.ZipEntry) enumer
     .nextElement();

   String zename = ze.getName();

   zename = new String(zename);// 文件名,不支持中文.

   System.out.println(zename);

   if (ze.isDirectory()) {
    java.io.File file = new java.io.File(dir.getAbsolutePath()
      + "/" + zename);

    file.mkdirs();
   } else {
    java.io.File file = new java.io.File(dir.getAbsolutePath()
      + "/" + zename).getParentFile();

    if (!file.exists()) {
     file.mkdirs();
    }
    byte zeby[] = new byte[(int) ze.getSize()];

    java.io.InputStream is = zf.getInputStream(ze);

    is.read(zeby);

    is.close();

    java.io.FileOutputStream fos = new java.io.FileOutputStream(dir
      .getAbsolutePath()
      + "/" + zename);

    fos.write(zeby);

    fos.close();
   }
  }
  zf.close();

 }

 private static void pack() throws IOException {
  // TODO Auto-generated method stub

  String compress = "/f2";// 要压缩的目录

  String decompression = "test.rar";// 压缩路径

  java.util.zip.ZipOutputStream zos = new java.util.zip.ZipOutputStream(
    new java.io.FileOutputStream(new java.io.File(decompression)));

  compress(zos, new File(compress));

  zos.close();
  System.out.println("the files count: " + i);
 }

 public static void compress(java.util.zip.ZipOutputStream zos,
   java.io.File file) throws java.io.IOException {
  if (file.isFile()) {
   byte by[] = new byte[(int) file.length()];

   java.io.FileInputStream is = new java.io.FileInputStream(file);

   is.read(by);

   is.close();

   java.util.zip.ZipEntry ze = new java.util.zip.ZipEntry(file
     .getPath());

   zos.putNextEntry(ze);

   zos.write(by);

   zos.closeEntry();
   System.out.println(file.getName());
  } else if (file.isDirectory()) {
   java.io.File files[] = file.listFiles();

   if (files != null)
    for (File f : files) {
     compress(zos, f);
     i++;
    }
  }

 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值