过了n多天后,当再次使用原先博客上写的那篇:

Android 压缩解压zip文件

去做zip包的解压的时候,出现了原来没有发现的很多问题。首先是中文汉字问题,使用java的zip包不能很好的解决解压问题;其次还有

getRealFileName()内的那个判断:
由之前的"if(dirs.length >1)" 如果是 >1 的话,对于一些文件不能够解压,修改为:
if(dirs.length>0)

对于zip压缩包内包含中文目录或者中文文件的话,参考网上的资源:
“使用apache的zip工具包(所在包为ant.jar )代替JDK的zip工具包,因为java类型自带的不支持中文路径,不过两者使用的方式是一样的,只是apache压缩工具多了设置编码方式的接口,其他基本上是一样的。” 如果android下想使用 apache 需要导入 ant.jar 这个包,下面附上下载链接:
http://download.csdn.net/detail/shizhending/4139787 对于android 工程添加 jar 包的方法也提供一下入口吧:
http://hi.baidu.com/yore2003/item/fb6d5cd21a4bec4dddf9bef2 上面讲到的添加 jar 要注意下最好是:
右键工程->properties->Java Build Path->Order and Export 
然后把刚才加的 Libray jar 置顶。 下面是使用apache zip工具包的具体源码:
 1 public static void    unZipFile(String archive, String decompressDir)throws IOException, FileNotFoundException, ZipException
2 {
3 BufferedInputStream bi;
4 ZipFile zf = new ZipFile(archive, "GBK");
5 Enumeration e = zf.getEntries();
6 while (e.hasMoreElements())
7 {
8 ZipEntry ze2 = (ZipEntry) e.nextElement();
9 String entryName = ze2.getName();
10 String path = decompressDir + "/" + entryName;
11 if (ze2.isDirectory())
12 {
13 System.out.println("正在创建解压目录 - " + entryName);
14 File decompressDirFile = new File(path);
15 if (!decompressDirFile.exists())
16 {
17 decompressDirFile.mkdirs();
18 }
19 } else
20 {
21 System.out.println("正在创建解压文件 - " + entryName);
22 String fileDir = path.substring(0, path.lastIndexOf("/"));
23 File fileDirFile = new File(fileDir);
24 if (!fileDirFile.exists())
25 {
26 fileDirFile.mkdirs();
27 }
28 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(decompressDir + "/" + entryName));
29 bi = new BufferedInputStream(zf.getInputStream(ze2));
30 byte[] readContent = new byte[1024];
31 int readCount = bi.read(readContent);
32 while (readCount != -1)
33 {
34 bos.write(readContent, 0, readCount);
35 readCount = bi.read(readContent);
36 }
37 bos.close();
38 }
39 }
40 zf.close();
41 //bIsUnzipFinsh = true;
42 }

同样记得要在AndroidManifest.xml里添加权限。

Android 解压zip文件的更多相关文章

  1. Android 解压zip文件(支持中文)

    过了n多天后,当再次使用原先博客上写的那篇: Android 压缩解压zip文件 去做zip包的解压的时候,出现了原来没有发现的很多问题.首先是中文汉字问题,使用java的zip包不能很好的解决解压问 ...

  2. Android 解压zip文件你知道多少?

    对于Android常用的压缩格式ZIP,你了解多少? Android的有两种解压ZIP的方法,你知道吗? ZipFile和ZipInputStream的解压效率,你对比过吗? 带着以上问题,现在就开始 ...

  3. 通过javascript在网页端解压zip文件并查看压缩包内容

    WEB前端解压ZIP压缩包 web前端解压zip文件有什么用: 只考虑标准浏览器的话, 服务器只要传输压缩包到客户端, 节约了带宽, 而且节约了传输时间, 听起来好像很厉害的说:     如果前端的代 ...

  4. (转载)C#压缩解压zip 文件

    转载之: C#压缩解压zip 文件 - 大气象 - 博客园http://www.cnblogs.com/greatverve/archive/2011/12/27/csharp-zip.html C# ...

  5. java实现解压zip文件,(亲测可用)!!!!!!

    项目结构: Util.java内容: package com.cfets.demo; import java.io.File; import java.io.FileOutputStream; imp ...

  6. python用zipfile模块打包文件或是目录、解压zip文件实例

    #!/usr/bin/env python # -*- coding: utf-8 -*- from zipfile import * import zipfile #解压zip文件 def unzi ...

  7. AIX解压ZIP文件

    AIX系统自身是没有解压ZIP文件的,但在AIX安装oracle数据库服务器的话,在$ORACLE_HOME/bin路径下方却有unzip命令,可以解压ZIP文件. 一.shell脚本   之前的版本 ...

  8. linux 解压zip文件

    linux 解压zip文件 学习了:https://blog.csdn.net/hbcui1984/article/details/1583796 unzip xx.zip

  9. Java 上传解压zip文件,并且解析文件里面的excel和图片

    需求:上传一个zip文件,zip文件里面包含一个excel和很多图片,需要把excel里面的信息解析出来保存到表中,同时图片也转化成base64保存到数据库表中. PS:为了方便不同水平的开发人员阅读 ...

随机推荐

  1. sequelize初使用

    官网地址:Sequelize Sequelize is a promise-based ORM for Node.js v4 and up. It supports the dialects Post ...

  2. 第二篇:服务消费者(rest + ribbon)

    一. ribbon简介 ribbon是一个负载均衡客户端,可以很好的控制http和tcp的一些行为,Feign也用到了ribbon,当你使用@ FeignClient,ribbon自动被应用. Rib ...

  3. mybatis多对多关联查询——(十)

    1.需求 查询用户及用户购买商品信息. 2     sql语句 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表: orders.orderdetail. ...

  4. docker之安装和管理mongodb

    前言 折腾一些使用docker来配置和管理mongodb和mongodb集群. 安装mongodb 从docker网站拉取mongodb镜像 docker search mongo # 选择一个版本 ...

  5. 公共语言运行库(CLR)开发系列课程(3):COM Interop基础 学习笔记

    上章地址 什么是COM Component Object Model 组建对象模型 基于接口(Interface) 接口=协议 IID 标识接口 V-table 虚表 方式调用 单继承 对象(Obje ...

  6. centos7下安装配置redis3.0.4

    安装redis 1.进入redis官网(redis.io)下载redis稳定版安装包,目前稳定版本为3.0.4 2.在linux  /usr文件夹下新建redis文件夹,拷贝安装包redis-3.0. ...

  7. centos7执行 wget命令: command not found的两种解决方法

    1.rpm 安装 下载wget的RPM包: http://mirrors.163.com/centos/6.8/os/x86_64/Packages/wget-1.12-8.el6.x86_64.rp ...

  8. Codeforces 671A Recycling Bottles(贪心+思维)

    题目链接:http://codeforces.com/problemset/problem/671/A 题目大意:给你两个人的位置和一个箱子的位置,然后给出n个瓶子的位置,要求让至少一个人去捡瓶子放到 ...

  9. Java登陆拦截器

    package com.beidou.warehouseerp.interceptor; import com.alibaba.fastjson.JSON; import com.beidou.war ...

  10. bzoj 1190

    思路:分层dp,因为给的w都是a*(2 ^ b)的形式, 我们将这些物品按b分层, 我们设 dp[ i ][ j ]表示在 第 i 层 容量为(j << i)的最大值, 然后通过层与层之间 ...