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

[ J2SE ] 文件压缩&解压缩

阅读更多

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

public class ZipFolder {

 OutputStream out;

 static ZipOutputStream zips;

 static InputStream in;

 private String dir;

 
 public OutputStream getOut() {
  return out;
 }

 public void setOut(OutputStream out) {
  this.out = out;
 }

 public String getDir() {
  return dir;
 }

 public void setDir(String dir) {
  this.dir = dir;
 }

 public void zipfile(String file) {

  try {
   int len = 0;
   byte[] buff = new byte[1024];
   in = new FileInputStream(file);
   zips.putNextEntry(new ZipEntry(file.substring(dir.length() + 2)));
   while ((len = in.read(buff)) != -1) {
    zips.write(buff, 0, len);
   }

  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }

 }

 public void folder(String folder) {
  File f = new File(folder);
  File[] fw = f.listFiles();
  for (int i = 0; i < fw.length; i++) {
   if (fw[i].isDirectory()) {
    System.out.println("|" + fw[i]);
    folder(fw[i].toString());
   } else {
    System.out.println("| " + fw[i].toString());
    zipfile(fw[i].toString());
   }
  }
  
 }
 //  压缩文件 
 private void zipIn(String fileIn,String zipOut) {
  ZipFolder is = new ZipFolder();
  OutputStream out1;
  try {
   out1 = new FileOutputStream(zipOut);
   is.setOut(out1);
   zips = new ZipOutputStream(is.getOut());
   is.setDir(fileIn);
   // 调用 folder
   is.folder(fileIn);
   zips.close();
   in.close();
   is.getOut().close();

  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  System.out.println("| 压缩结束.... ");
  
 }

 private void UnZip(ZipFile zFile, String path) {
  try {
   // 获取压缩包中的每个文件
   Enumeration enu = zFile.entries();
   while (enu.hasMoreElements()) {
    // 将文件路径放入zEntry
    ZipEntry zEntry = (ZipEntry) enu.nextElement();
    // 创建此文件路径的File对象
    File file = new File(path + "//" + zEntry.getName());
    // 如果文件夹不存在,则创建
    File parentDir = new File(file.getParent());
    if (!parentDir.exists()) {
     parentDir.mkdirs();
    }
    // 解压文件
    InputStream read = zFile.getInputStream(zEntry);
    FileOutputStream write = new FileOutputStream(file.getPath());
    int len = 0;
    byte[] buff = new byte[1024];
    while ((len = read.read(buff, 0, buff.length)) != -1) {
     write.write(buff, 0, len);
    }
    write.close();
   }
  } catch (Exception ex) {
   ex.printStackTrace();
  }

 }
 // 解压缩文件
 public void zipOut(String zipIn,String fileOut) {
  try {
   //  ZipFile 以使用指定模式从指定 File(path) 对象读取
   ZipFile zip = new ZipFile(new File(zipIn));
   UnZip(zip, fileOut);
   zip.close();
  } catch (Exception ex) {
   ex.printStackTrace();
  }
  System.out.println(" 解压缩结束....");
 }
 /**
  * @param args
  * @throws IOException
  */

 public static void main(String[] args) throws IOException {
  ZipFolder zip = new ZipFolder();
//  // 1.压缩
//   zip.zipIn("E:\\Program Files", "E:\\files.zip");
//  // 2.解压缩
//  zip.zipOut("E:\\files.zip","e:\\321");
 
 }

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics