今天弄了一下午解压的问题,需求嘛,把自己踩过的坑记录下来,也为了跟我一样的新人少坑的路。

怎么那么多的屁话,上代码啊!

上解压的代码:

//第一个参数就是需要解压的文件,第二个就是解压的目录

public static boolean upZipFileDir(File zipFile, String folderPath) {

ZipFile zfile= null;

try {

//转码为GBK格式,支持中文

zfile = new ZipFile(zipFile,"GBK");

} catch (IOException e) {

e.printStackTrace();

return false;

}

Enumeration zList=zfile.getEntries();

ZipEntry ze=null;

byte[] buf=new byte[1024];

while(zList.hasMoreElements()){

ze=(ZipEntry)zList.nextElement();

//列举的压缩文件里面的各个文件,判断是否为目录

if(ze.isDirectory()){

String dirstr = folderPath + ze.getName();

dirstr.trim();

File f=new File(dirstr);

f.mkdir();

continue;

}

OutputStream os= null;

FileOutputStream fos = null;

// ze.getName()会返回 script/start.script这样的,是为了返回实体的File

File realFile = getRealFileName(folderPath, ze.getName());

try {

fos = new FileOutputStream(realFile);

} catch (FileNotFoundException e) {

e.printStackTrace();

return false;

}

os = new BufferedOutputStream(fos);

InputStream is= null;

try {

is = new BufferedInputStream(zfile.getInputStream(ze));

} catch (IOException e) {

e.printStackTrace();

return false;

}

int readLen=0;

//进行一些内容复制操作

try {

while ((readLen=is.read(buf, 0, 1024))!=-1) {

os.write(buf, 0, readLen);

}

} catch (IOException e) {

e.printStackTrace();

return false;

}

try {

is.close();

os.close();

} catch (IOException e) {

e.printStackTrace();

return false;

}

}

try {

zfile.close();

} catch (IOException e) {

e.printStackTrace();

return false;

}

return true;

}

/**

* 给定根目录,返回一个相对路径所对应的实际文件名.

* @param baseDir 指定根目录

* @param absFileName 相对路径名,来自于ZipEntry中的name

* @return java.io.File 实际的文件

*/

public static File getRealFileName(String baseDir, String absFileName){

String[] dirs=absFileName.split("/");

File ret = new File(baseDir);

String substr = null;

if(dirs.length>1){

for (int i = 0; i < dirs.length-1;i++) {

substr = dirs[i];

ret=new File(ret, substr);

}

if(!ret.exists())

ret.mkdirs();

substr = dirs[dirs.length-1];

ret=new File(ret, substr);

return ret;

}else{

ret = new File(ret,absFileName);

}

return ret;

}

记得别用系统提供的java.util.zip.ZipFile这个类,没办法支持中文的。

去下载 ZipEntry.jar引用到项目中即可。

android 代码解压,Android开发之旅-解压压缩zip文件(带子目录和中文路径)相关推荐

  1. Android App Bundles相关概念及开发流程详解

    本文会根据官网的介绍,结合自己的一些理解,来阐述Android App Bundles的相关概念和开发流程. 主要参考文章如下. https://developer.android.com/guide ...

  2. android 代码打开权限,android开发权限询问的示例代码

    现在基于信息安全问题,特别是版本是23以上权限越严格. 特别是拍照,读,写权限 一般权限允许过,下次就不用询问了的,所以很多应用都喜欢在首页或者启动页直接询问,不允许的就用不了1.下面给出封装好的类, ...

  3. Android代码混淆方法,Android 代码混淆零基础入门

    内容提要 本篇文章主要有三个部分,让读者读完后能自己写规则混淆项目 对Android代码怎么开启混淆做一个简单的介绍. 对混淆规则做一个简单介绍: 在混淆过后Crash日志反推代码工具retrace. ...

  4. android代码说明文档,android:label说明

    文章目录 1. 说明 android:label 用于app 在切换activity的时候,自动更换左上角的显示 2. 代码架构 3. String.xml 字符串资源文件My Application ...

  5. android 代码加view,Android中将View添加至窗口的源码分析

    本文主要内容是讲解一个视图View或者一个ViewGroup对象是如何添加至应用程序窗口中的.下文中提到的窗口可泛指我们能看到的界面,包括一个Activity呈现的界面(我们可以将之理解为应用程序窗口 ...

  6. android 代码签名apk,[Android]混淆代码后生成带签名的apk

    Android从2.3的SDK开始,将ProGuard混淆代码的功能加入了进来. 我们可以从android sdk的tools目录下看到有一个proguard目录.说明具有了代码混淆的功能. 至于如何 ...

  7. android代码关闭数据库,android – 我应该如何正确打开和关闭我的数据库

    我有一个应用程序,它将一些数据存储在SQLite数据库中.此外,我在我的应用程序中进行了大量查询和重新查询.我在其中有大约15个活动.并且所有人都使用数据库来查询数据. 但我正在做的是在每个活动中打开 ...

  8. android代码查找图像,Android平台上利用opencv进行图像的边沿检测

    原标题:Android平台上利用opencv进行图像的边沿检测 近开始接触opencv for Android,从网上down了图像的边沿检测的代码. 测试图片: 在Android2.3.1模拟器上跑 ...

  9. Android代码混淆处理,android代码混淆解决方案

    以下包含了常见的基本代码与一些三方框架的混淆方案. ##########################基本混淆参数###################### # 代码混淆压缩比,在0~7之间,默认 ...

最新文章

  1. AttributeError: ‘Tensor‘ object has no attribute ‘encoder‘
  2. 客户端调用 WCF 的几种方式
  3. PHP JSON文件解析并获取key、value,判断key是否存在
  4. leetcode刷题六z字形变换
  5. Redis Key过期及清除策略
  6. 关闭tensorflow运行时的警告信息1
  7. Azure Redis 缓存使用注意事项与排查问题文档整理
  8. SystemFile
  9. NullableTypes for .NET
  10. angular遇到问题
  11. hybird简介以及安卓应用hybird初体验
  12. matlab插值计算
  13. 服务器属于网络计算机,服务器它到底是什么,和电脑又有什么区别
  14. Redhat 7.2 安装网卡驱动
  15. PPT/Word中英文单词换行问题 (取消了西文在单词中间换行的选项,但英文部分依然不连续) 的解决方法
  16. js简繁转换,两种实现方式,妥妥的~
  17. 西门子smart200与台达MS300变频器通讯程序 触摸屏与plc以太网通讯,PLC与变频器通讯485口相连
  18. P60-前端基础HTML-表格样式
  19. python3 manage.py startapp catalog 执行成功但未生成 catalog文件夹 解决办法
  20. 周日我们能见证历史时刻吗?反正现在先预热!

热门文章

  1. 最大化参数 火车头_铁路大亨各火车头的性能参数
  2. 科比:向火箭脱帽致敬!
  3. 64位Win7,联想LenovoV470A2350W44G500P7CW7(BK-2G)-CN 频繁报告××已停止工作 原因
  4. 【一点自己的人生经历】记一次考博经历
  5. Qt 槽机制:public slots 和 private slots
  6. 风火轮编程Python第一阶段课程检测评估单
  7. 【JAVAScript】——onload,onbeforeunload,onunload区别
  8. Photoshop的基本使用和Cutterman插件的安装
  9. 超实用的网页页脚设计小技巧
  10. Hudi学习二:Hudi基本概念