仓酷云
标题:
发布一篇利用java.util.zip完成文件紧缩息争压
[打印本页]
作者:
飘飘悠悠
时间:
2015-1-18 11:04
标题:
发布一篇利用java.util.zip完成文件紧缩息争压
在1995年5月23日以“Java”的名称正式发布了。
importjava.io.*;
importjava.util.zip.*;
/***//**
*功效:zip紧缩、解压
*申明:本程序经由过程ZipOutputStream和ZipInputStream完成了zip紧缩息争压功效.
*成绩:因为java.util.zip包其实不撑持汉字,当zip文件中着名字为中文的文件时
,authorbyhttp://www.bt285.cnhttp://www.5a520.cn
* 就会呈现非常:"Exception inthread"main"java.lang.IllegalArgumentExceptionBR>* at java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:285)
*办理:
* 办法1、修正importjava.util.zip.ZipInputStream和ZipOutputStream.
* java.util.zip只撑持UTF-8,Ant内里能够指定编码.
* 办法2、利用ApacheAnt里供应的zip工具。
* 不利用java.util.zip的包,把ant.jar放到classpath中.
* 程序中利用importorg.apache.tools.zip.*;
*
*仅供编程进修参考.
*
*@authorWinty
*@date 2008-8-3
*@Usage:
* 紧缩:javaZip-zip"directoryName"
* 解压:javaZip-unzip"fileName.zip"
*/
publicclassZip{
privateZipInputStream zipIn; //解压Zip
privateZipOutputStreamzipOut; //紧缩Zip
privateZipEntry zipEntry;
privatestaticint bufSize; //sizeofbytes
privatebyte[] buf;
privateint readedBytes;
publicZip(){
this(512);
}
publicZip(intbufSize){
this.bufSize=bufSize;
this.buf=newbyte[this.bufSize];
}
//紧缩文件夹内的文件
publicvoiddoZip(StringzipDirectory){//zipDirectoryPath:必要紧缩的文件夹名
Filefile;
FilezipDir;
zipDir=newFile(zipDirectory);
StringzipFileName=zipDir.getName()+".zip";//紧缩后天生的zip文件名
try{
this.zipOut=newZipOutputStream(newBufferedOutputStream(newFileOutputStream(zipFileName)));
handleDir(zipDir,this.zipOut);
this.zipOut.close();
}catch(IOExceptionioe){
ioe.printStackTrace();
}
}
//由doZip挪用,递回完成目次文件读取
privatevoidhandleDir(Filedir,ZipOutputStreamzipOut)throwsIOException{
FileInputStreamfileIn;
File[]files;
files=dir.listFiles();
if(files.length==0){//假如目次为空,则独自创立之.
//ZipEntry的isDirectory()办法中,目次以"/"开头.
this.zipOut.putNextEntry(newZipEntry(dir.toString()+"/"));
this.zipOut.closeEntry();
}
else{//假如目次不为空,则分离处置目次和文件.
for(FilefileName:files){
//System.out.println(fileName);
if(fileName.isDirectory()){
handleDir(fileName,this.zipOut);
}
else{
fileIn=newFileInputStream(fileName);
this.zipOut.putNextEntry(newZipEntry(fileName.toString()));
while((this.readedBytes=fileIn.read(this.buf))>0){
this.zipOut.write(this.buf,0,this.readedBytes);
}
this.zipOut.closeEntry();
}
}
}
}
//解压指定zip文件
publicvoidunZip(StringunZipfileName){//unZipfileName必要解压的zip文件名
FileOutputStreamfileOut;
Filefile;
try{
this.zipIn=newZipInputStream(newBufferedInputStream(newFileInputStream(unZipfileName)));
while((this.zipEntry=this.zipIn.getNextEntry())!=null){
file=newFile(this.zipEntry.getName());
//System.out.println(file);///
if(this.zipEntry.isDirectory()){
file.mkdirs();
}
else{
//假如指定文件的目次不存在,则创立之.
Fileparent=file.getParentFile();
if(!parent.exists()){
parent.mkdirs();
}
fileOut=newFileOutputStream(file);
while((this.readedBytes=this.zipIn.read(this.buf))>0){
fileOut.write(this.buf,0,this.readedBytes);
}
fileOut.close();
}
this.zipIn.closeEntry();
}
}catch(IOExceptionioe){
ioe.printStackTrace();
}
}
//设置缓冲区巨细
publicvoidsetBufSize(intbufSize){
this.bufSize=bufSize;
}
//测试Zip类
publicstaticvoidmain(String[]args)throwsException{
if(args.length==2){
Stringname=args[1];
Zipzip=newZip();
if(args[0].equals("-zip"))
zip.doZip(name);
elseif(args[0].equals("-unzip"))
zip.unZip(name);
}
else{
System.out.println("Usage:");
System.out.println("紧缩:javaZip-ziphttp://www.bt285.cn/directoryName");
System.out.println("解压:javaZip-unziphttp://www.feng123.com/fileName.zip");
thrownewException("Argumentserror!");
}
}
}
你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。
作者:
若相依
时间:
2015-1-18 16:48
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
作者:
蒙在股里
时间:
2015-1-22 13:37
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者:
再见西城
时间:
2015-1-28 19:38
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者:
飘灵儿
时间:
2015-2-5 18:51
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者:
莫相离
时间:
2015-2-13 04:51
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
作者:
金色的骷髅
时间:
2015-3-3 14:02
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者:
谁可相欹
时间:
2015-3-11 11:09
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
作者:
不帅
时间:
2015-3-18 07:40
是一种使用者不需花费很多时间学习的语言
作者:
若天明
时间:
2015-3-25 13:26
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2