`
carlos
  • 浏览: 17686 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

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++;
    }
  }

 }
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics