网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  一个用java.util.zip创建和读取zip文件的类,可以操作目录     
  文章作者:未知  文章来源:水木森林  
  查看:125次  录入:管理员--2007-11-17  
 
  写了一个用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[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();
}

}
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);}
}
}
 
 
上一篇: 学习使用corba编写访问服务器对象的分布式java小应用    下一篇: 用 java 语言进行算法作曲
  相关文档
.net下开发windows 服务应用程序 11-17
使用技巧 采用jsi封装、集成第三方类库 11-16
java servlet 编程及应用之四 11-16
常用java方法 11-17
在windows/nt上建立jsp环境 11-16
使用java操作windows系统注册表 11-17
好的连接池,免费的 11-17
为java新手入门准备的最基础的学习资料 11-16
关于窗口的操作详谈 11-17
sun与amd合作推x64服务器 兼容win系统 11-17
java中的传值与传reference . 11-17
利用 oracle dms 测量 java 应用程序性能 11-17
tomcat 5集群中的session复制二 11-17
ramdom的应用 11-17
java入门:redhat9下的java中文问题解决 03-03
java网络编程基础(二) socket类的使用方法 10-28
java中按字节截取string字符串. 11-17
oreilly新书推荐:《游戏开发物理学》 11-17
基于spring的应用增加简单规则引擎 11-17
ejb设计模式(3) 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息