转载自:http://orz.iteye.com/blog/110842
-
importjava.io.BufferedInputStream;
-
importjava.io.BufferedOutputStream;
-
importjava.io.File;
-
importjava.io.FileInputStream;
-
importjava.io.FileOutputStream;
-
importjava.io.IOException;
-
importjava.io.InputStream;
-
importjava.io.OutputStream;
-
importjava.util.ArrayList;
-
importjava.util.Enumeration;
-
importjava.util.List;
-
importjava.util.zip.ZipEntry;
-
importjava.util.zip.ZipFile;
-
importjava.util.zip.ZipOutputStream;
-
-
publicclassZipToFile{
-
-
publicstaticfinalStringZIP_FILENAME="C:\\XJPDA.zip";
-
publicstaticfinalStringZIP_DIR="C:\\XJPDA\\";
-
publicstaticfinalStringUN_ZIP_DIR="C:\\";
-
publicstaticfinalintBUFFER=1024;
-
-
-
-
-
-
-
publicstaticvoidzipFile(StringbaseDir,StringfileName)throwsException{
-
ListfileList=getSubFiles(newFile(baseDir));
-
ZipOutputStreamzos=newZipOutputStream(newFileOutputStream(fileName));
-
ZipEntryze=null;
-
byte[]buf=newbyte[BUFFER];
-
intreadLen=0;
-
for(inti=0;i<fileList.size();i++){
-
Filef=(File)fileList.get(i);
-
ze=newZipEntry(getAbsFileName(baseDir,f));
-
ze.setSize(f.length());
-
ze.setTime(f.lastModified());
-
zos.putNextEntry(ze);
-
InputStreamis=newBufferedInputStream(newFileInputStream(f));
-
while((readLen=is.read(buf,0,BUFFER))!=-1){
-
zos.write(buf,0,readLen);
-
}
-
is.close();
-
}
-
zos.close();
-
}
-
-
-
-
-
-
-
-
privatestaticStringgetAbsFileName(StringbaseDir,FilerealFileName){
-
Filereal=realFileName;
-
Filebase=newFile(baseDir);
-
Stringret=real.getName();
-
while(true){
-
real=real.getParentFile();
-
if(real==null)
-
break;
-
if(real.equals(base))
-
break;
-
else
-
ret=real.getName()+"/"+ret;
-
}
-
returnret;
-
}
-
-
-
-
-
-
-
privatestaticListgetSubFiles(FilebaseDir){
-
Listret=newArrayList();
-
File[]tmp=baseDir.listFiles();
-
for(inti=0;i<tmp.length;i++){
-
if(tmp[i].isFile())
-
ret.add(tmp[i]);
-
if(tmp[i].isDirectory())
-
ret.addAll(getSubFiles(tmp[i]));
-
}
-
returnret;
-
}
-
-
-
-
-
-
-
publicstaticvoidupZipFile()throwsException{
-
ZipFilezfile=newZipFile(ZIP_FILENAME);
-
EnumerationzList=zfile.entries();
-
ZipEntryze=null;
-
byte[]buf=newbyte[1024];
-
while(zList.hasMoreElements()){
-
ze=(ZipEntry)zList.nextElement();
-
if(ze.isDirectory()){
-
Filef=newFile(ZIP_DIR+ze.getName());
-
f.mkdir();
-
continue;
-
}
-
OutputStreamos=newBufferedOutputStream(newFileOutputStream(getRealFileName(ZIP_DIR,ze.getName())));
-
InputStreamis=newBufferedInputStream(zfile.getInputStream(ze));
-
intreadLen=0;
-
while((readLen=is.read(buf,0,1024))!=-1){
-
os.write(buf,0,readLen);
-
}
-
is.close();
-
os.close();
-
}
-
zfile.close();
-
}
-
-
-
-
-
-
-
-
publicstaticFilegetRealFileName(StringbaseDir,StringabsFileName){
-
String[]dirs=absFileName.split("/");
-
Fileret=newFile(baseDir);
-
if(dirs.length>1){
-
for(inti=0;i<dirs.length-1;i++){
-
ret=newFile(ret,dirs[i]);
-
}
-
if(!ret.exists())
-
ret.mkdirs();
-
ret=newFile(ret,dirs[dirs.length-1]);
-
returnret;
-
}
-
returnret;
-
}
-
-
}
不过上面存在中文问题是因为java.util.zip下的格式转换有问题将import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import java.util.zip.ZipOutputStream;改成import org.apache.tools.zip.*;即可!apache里修正了这一现象。
分享到:
相关推荐
使用Java核心API实现单文件/多文件/整个目录的压缩/解压缩功能,由于自带API(1.6)不支持指定编码方式,因此中文会出现乱码(1.7貌似已经支持指定编码方式),所以还写了一个基于ant包的压缩/解压缩代码。
java 实现压缩与解压缩ZIP .docjava 实现压缩与解压缩ZIP .docjava 实现压缩与解压缩ZIP .docjava 实现压缩与解压缩ZIP .doc
java 解压缩zip文件 java 解压缩zip文件 java 解压缩zip文件
JAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩...
java 压缩/解压 .zip/.rar/.tar 文件,大家一起讨论,学习 已实现zip压缩/解压,rar解压
JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码
java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....
解决java ZIP压缩、解压缩(同时加解密)问题,代码部分
JAVA文件压缩与解压缩实践(源代码+论文)
JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与...
java实现压缩与解压缩源码,demo 分享。 java实现压缩与解压缩源码。 java实现压缩与解压缩源码 java
关于Java实现文件的zip的解压缩 文本文档 虽然不多
压缩API:Java提供了java.util.zip和java.util.jar包来实现文件的压缩和解压缩操作。 压缩算法:通过选择不同的压缩算法,如DEFLATE算法用于ZIP格式,实现对文件的压缩。 流操作:使用Java的输入输出流(InputStream...
Java 1.1实现了I/O数据流与网络数据流的单一接口,因此数据的压缩、网络传输和解 压缩的实现比较容易,下面介绍利用ZipEntry、ZipInputStream和ZipOutputStream三个Java 类实现zip数据压缩方式的编程方法。 zip压缩...
java语言操作解压缩文件。 /** * 数据压缩 * * @param data * @return * @throws Exception */ public static byte[] compress(byte[] data) throws Exception { ByteArrayInputStream bais = new ...
Java实现压缩解压缩文件和文件夹(附源码) zip unzip 压缩 解压缩
Java实现压缩与解压缩功能源码,简单易用。直接嵌套在你需要的地方即可。