壓縮和解壓縮文件
/**
?* 壓縮和解壓縮文件
?*/
import java.util.*;
import java.util.zip.*;
import java.io.*;
public class Zip {
? public Zip(){}
? /**
?? * 壓縮目錄下的文件
?? * @param zipFileName
?? * @param inputFile 目錄
?? * @throws java.lang.Exception
?? */
? public void zip(String zipFileName, String inputFile) throws Exception {
??? zip(zipFileName, new File(inputFile));
? }
? /**
?? * 壓縮文件
?? * @param zipFileName
?? * @param inputFile 文件
?? * @throws java.lang.Exception
?? */
? public void zip(String zipFileName, File inputFile) throws Exception {
??? ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));
??? zip(out, inputFile, "");
??? System.out.println("壓縮成功!");
??? out.close();
? }
? public void zip(ZipOutputStream out, File f, String base) throws Exception {
??? System.out.println("正在壓縮? " + f.getName());
??? if (f.isDirectory()) {
????? File[] fl = f.listFiles();
????? out.putNextEntry(new ZipEntry(base + "/"));
????? base = base.length() == 0 ? "" : base + "/";
????? for (int i = 0; i < fl.length; i++) {
??????? zip(out, fl[i], base + fl[i].getName());
????? }
??? }
??? else {
????? out.putNextEntry(new ZipEntry(base));
????? FileInputStream in = new FileInputStream(f);
????? int b;
????? while ( (b = in.read()) != -1)
??????? out.write(b);
????? in.close();
??? }
? }
? /**
?? * 解壓縮
?? * @param zipFileName
?? * @param outputDirectory 輸出目錄
?? * @throws java.lang.Exception
?? */
? public void unzip(String zipFileName, String outputDirectory) throws
????? Exception {
??? ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName));
??? ZipEntry z;
??? while ( (z = in.getNextEntry()) != null) {
????? System.out.println("正在解壓 " + z.getName());
????? if (z.isDirectory()) {
??????? String name = z.getName();
??????? name = name.substring(0, name.length() - 1);
??????? File f = new File(outputDirectory + File.separator + name);
??????? f.mkdir();
??????? System.out.println("創(chuàng)建目錄 " + outputDirectory + File.separator + name);
????? }
????? else {
??????? File f = new File(outputDirectory + File.separator + z.getName());
??????? f.createNewFile();
??????? FileOutputStream out = new FileOutputStream(f);
??????? int b;
??????? while ( (b = in.read()) != -1)
????????? out.write(b);
??????? out.close();
????? }
??? }
??? in.close();
? }
? public static void main(String[] args) {
??? try {
????? Zip t = new Zip();
//????? t.zip("D:\\IdeaProjects.zip", "D:\\IdeaProjects");
//????? t.unzip("d:\\ddd\\api.jar", "d:\\ddd\\");
??? }
??? catch (Exception e) {
????? e.printStackTrace(System.out);
??? }
? }
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=127606
posted on 2007-04-01 17:53 javaboys 閱讀(128) 評論(0) 編輯 收藏 所屬分類: java web