|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在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,代码照样能够编译运行的。 |
|