写了一个用java.util.zip创建和读取zip文件的类
跟大家分享一下
里面用了递归调用
呵呵
近期用了不少递归调用!有空总结一下!
/**
TestZip.java
coding by Serol Luo.
rollingpig@163.com
2003/07/03
http://www.chinaunix.net/forum/viewforum.php?f=26
转载请保留此信息
*/
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);}
}
}
elgs 回复于:2003-07-03 13:05:33
很不错!
echoguo 回复于:2004-02-03 12:53:50
太好了
今天还在java中文站看到老大的这篇帖子
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 可以 操作 目录 文件 创建 读取 一个 System.out.println |
注册
个人空间
