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 閱讀(488)
評論(0) 編輯 收藏