java应用压缩、解压zip文件
来源:互联网 发布:mac桌面下方图标删除 编辑:程序博客网 时间:2024/06/11 06:33
导入java.util.zip.*数据包,
<span style="font-size:14px;">public class Zip{ private ZipInputStream zipIn; //解压Zip private ZipOutputStream zipOut; //压缩Zip private ZipEntry zipEntry; private static int bufSize; //size of bytes private byte[] buf; private int readedBytes; public Zip(){ this(512); } public Zip(int bufSize){ this.bufSize = bufSize; this.buf = new byte[this.bufSize]; } //压缩文件夹内的文件 public void doZip(String zipDirectory){//zipDirectoryPath:需要压缩的文件夹名 File file; File zipDir; zipDir = new File(zipDirectory); String zipFileName = zipDirectory + ".zip";//压缩后生成的zip文件名 try{ this.zipOut = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFileName))); handleDir(zipDir , this.zipOut); this.zipOut.close(); }catch(Exception ioe){ ioe.printStackTrace(); } } //由doZip调用,递归完成目录文件读取 private void handleDir(File dir , ZipOutputStream zipOut)throws Exception{ FileInputStream fileIn; File[] files; files = dir.listFiles(); if(files.length == 0){//如果目录为空,则单独创建之. //ZipEntry的isDirectory()方法中,目录以"/"结尾. this.zipOut.putNextEntry(new ZipEntry(dir.toString() + "/")); this.zipOut.closeEntry(); } else{//如果目录不为空,则分别处理目录和文件. for(File fileName : files){ if(fileName.isDirectory()){ handleDir(fileName , this.zipOut); } else{ fileIn = new FileInputStream(fileName); String name=dir.getName(); //生成的压缩包存放在原目录下 this.zipOut.putNextEntry(new ZipEntry(name+"/"+fileName.getName().toString())); //此方法存放在该项目目录下 //this.zipOut.putNextEntry(new ZipEntry(fileName.toString())); while((this.readedBytes=fileIn.read(this.buf))>0){ this.zipOut.write(this.buf , 0 , this.readedBytes); } this.zipOut.closeEntry(); } } } } //解压指定zip文件 public void unZip(String unZipfileName,String savedir){//unZipfileName需要解压的zip文件名 FileOutputStream fileOut; File zipfile=new File(unZipfileName); File file; String zipName=zipfile.getName(); String f=zipName.substring(0, zipName.length()-4); File ff=new File(savedir+"/"+f); try{ this.zipIn = new ZipInputStream (new BufferedInputStream(new FileInputStream(unZipfileName))); while((this.zipEntry = this.zipIn.getNextEntry()) != null){ file = new File(ff+"\\"+this.zipEntry.getName()); System.out.println("zip:"+this.zipEntry.getName()); if(this.zipEntry.isDirectory()){ // file.mkdirs(); System.out.println(file.getAbsolutePath()); File dir=new File(ff+"\\"+this.zipEntry.getName()); System.out.println("dir "+dir.getAbsolutePath()); } else{ //如果指定文件的目录不存在,则创建之. File parent = file.getParentFile(); System.out.println("parent:"+parent +" "+file); if(parent!=null){ if(!parent.exists()){ parent.mkdirs(); System.out.println("parentpath "+parent.getAbsolutePath()); } } if(!ff.exists()){ ff.mkdir(); } // System.out.println(ff+"\\"+file.getName()); fileOut = new FileOutputStream(file); //fileOut = new FileOutputStream(file); 此方法存放到该项目目录下 while(( this.readedBytes = this.zipIn.read(this.buf) ) > 0){ fileOut.write(this.buf , 0 , this.readedBytes ); } fileOut.close(); } this.zipIn.closeEntry(); } }catch(Exception ioe){ ioe.printStackTrace(); } } //设置缓冲区大小 public void setBufSize(int bufSize){ this.bufSize = bufSize; } //测试Zip类 public static void main(String[] args)throws Exception{ Zip zip=new Zip(); zip.unZip("E:\\page\\baidu.zip","C:\\Users\\lmy\\Desktop"); } </span>
0 0
- java应用压缩、解压zip文件
- java压缩解压ZIP文件
- Java 解压和压缩密码zip文件
- java实现zip文件压缩,解压
- java zip文件的压缩与解压
- 使用java.util.zip压缩、解压文件
- java压缩及解压(.zip)文件文件夹
- Java 压缩,解压zip文件(支持中文)
- 使用java解压或者压缩zip文件
- java 处理zip压缩/解压 文件/目录
- java解压和压缩zip文件
- .zip文件解压、压缩
- JAVA压缩/解压ZIP
- Java压缩/解压ZIP
- java zip压缩解压
- java,zip压缩,解压。
- Java Zip 压缩、解压
- Java 基于java.util.zip类压缩解压Zip文件
- 高效Linux之统计文件数量
- 使用操作系统命令来trace监听
- C、C++基础知识一
- java中四种引用类型
- XML 元素 http://blog.csdn.net/chaiyu2002/article/details/5967186
- java应用压缩、解压zip文件
- uval 6425 Intercity
- 20140517随感
- python学习-函数定义理解
- vs2012装qt5.5
- 【js】弹出文件选择框,可用与文件上传(适配所有浏览器)
- Android中XML解析之XMLSAXParser解析
- (int&) 与int(&)
- 使用 Sonar 进行代码质量管理