仓酷云

标题: 发布一篇利用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