Android解压sd卡里面Zip压缩文件
来源:互联网 发布:编曲软件排名 编辑:程序博客网 时间:2024/06/12 01:03
1.权限 <uses-permission Android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 写SD卡的权限非常重要。
2.直接使用这个类就好了。
package com.example.testdemo;import java.io.File;import java.io.BufferedOutputStream;import java.io.BufferedInputStream;import java.io.FileOutputStream;import java.io.FileInputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipInputStream;import java.util.zip.ZipOutputStream;/** * 该类实现文件夹压缩成zip文件和zip文件解压 * @author Administrator * */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){//unZipfileName需要解压的zip文件名 FileOutputStream fileOut; File file; String f=unZipfileName.substring(0, unZipfileName.length()-4); File ff=new File(f); try{ this.zipIn = new ZipInputStream (new BufferedInputStream(new FileInputStream(unZipfileName))); while((this.zipEntry = this.zipIn.getNextEntry()) != null){ file = new File(this.zipEntry.getName()); if(this.zipEntry.isDirectory()){ file.mkdirs(); } else{ //如果指定文件的目录不存在,则创建之. File parent = file.getParentFile(); if(!parent.exists()){ parent.mkdirs(); } if(!ff.exists()){ ff.mkdir(); } fileOut = new FileOutputStream(f+"/"+file.getName()); //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.doZip("d:\\1234"); zip.unZip("d:\\1234.zip"); } }
3.引用这个类中的方法:
Zip zip = new Zip();Toast.makeText(getApplicationContext(), "ok", 0).show();zip.unZip(Environment.getExternalStorageDirectory()+"/1234.zip");
阅读全文
0 0
- Android解压sd卡里面Zip压缩文件
- Android解压sd卡里面Zip压缩文件
- Android--下载zip压缩文件并解压
- Android--下载zip压缩文件并解压
- android解压sd卡中的压缩文件
- Android 操作数据库Sqlite,数据写入到SD卡里面
- java 解压zip压缩文件
- JSP解压ZIP压缩文件
- Zip压缩文件 与 解压
- JSP解压ZIP压缩文件
- JSP解压ZIP压缩文件
- C# 解压zip压缩文件
- Zip压缩文件 与 解压
- Android SD卡中解压.zip文件
- java 解压本地zip压缩文件
- 解压zip跟rar压缩文件
- c# 压缩文件及解压Zip
- android系统下sd卡里文件识别
- MySql高级知识的一些总结
- idea快捷键
- 微服务框架下的思维变化-OSS.Core基础思路
- 数据库性能分析工具
- phpcms V9浏览记录 插件
- Android解压sd卡里面Zip压缩文件
- 由一个HADOOP_HOME and hadoop.home.dir are unset报错引起的window环境连接调试远程hadoop的一系列问题,hadoop版本 2.8
- 关于MATLAB画图
- python
- 简单RPC框架-基于Consul的服务注册与发现
- macbook下解决MyEclipse卡死后无法启动tomcat,8080或8009端口占用问题
- Android新特性介绍,ConstraintLayout完全解析
- linux上部署tomcat出现java heap堆内存溢出
- java 连接数据库 jdbc