随笔-25  评论-6  文章-0  trackbacks-0
import java.util.*;

import java.util.zip.*;

import java.io.*;

class TestZip 

{

public void zip(String zipFileName,String inputFile)throws Exception{

zip(zipFileName,new File(inputFile));

}

public void zip(String zipFileName,File inputFile)throws Exception{

ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName));

zip(out,inputFile,"");

System.out.println("zip done");

out.close();

}



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("unziping "+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("mkdir "+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 void zip(ZipOutputStream out,File f,String base)throws Exception{

System.out.println("Zipping  "+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,base+fl.getName());

}

}

else

{

out.putNextEntry(new ZipEntry(base));

FileInputStream in=new FileInputStream(f);

int b;

while ((b=in.read()) != -1)

out.write(b);

in.close();

}



}

public static void main(String[] args) 

{

try{

TestZip t=new TestZip();

t.zip("c:\\test.zip","c:\\test");

t.unzip("c:\\test.zip","c:\\test2");

}

catch(Exception e){e.printStackTrace(System.out);}

}

}
posted on 2006-05-29 17:47 MyJavaWorld 阅读(484) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: