压缩:
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class MyZipTest {
/**
*
* @param zipFileName 要压缩成的文件名
* @param inputFile 要压缩的文件夹
* @throws Exception 异常处理
*/
private void zip(String zipFileName,File inputFile) throws Exception
{
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));
zip(out,inputFile,"");
System.out.println("压缩中....");
out.close();
}
private void zip(ZipOutputStream out,File f,String base) throws Exception
{
File[] fl =null;
if(f.isDirectory()) //判断是否为目录
{
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]);
}
}
else
{
out.putNextEntry(new ZipEntry(base));
FileInputStream in = new FileInputStream(f);
int b ;
System.out.println("base"+base);
while((b=in.read())!=-1){
out.write(b);
}
in.close();
}
}
/**
* @param args
*/
public static void main(String[] args) {
MyZipTest myZipTest = new MyZipTest(); //实例化
try
{
myZipTest.zip("E:/workspace/Java从入门到精通/hello.zip",new File("E:/workspace/Java从入门到精通/hello"));//压缩后的文件与要压缩的文件
System.out.println("压缩完成.");
}catch(Exception e)
{
}
}
}
解压缩:
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream; //包导入
public class Decompressing {
public static void main(String[] args) {
ZipInputStream zin; //ZipInputStream对象
try
{
zin = new ZipInputStream(new FileInputStream("E:/workspace/Java从入门到精通/hello.zip"));
ZipEntry entry = zin.getNextEntry(); //获得下一个ZipEntry
while(((entry=zin.getNextEntry())!=null)&& !entry.isDirectory())//entry不为空,并且不在同一个目录下
{
File file = new File(entry.getName()); //获得文件目录
if(!file.exists()) //如果不存在
{
file.createNewFile();
}
zin.closeEntry();
System.out.println(entry.getName()+"解压成功。");
}
zin.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}