Android 解压zip压缩包 (压缩包内有多级目录)
目录
一、AndroidManifest.xml 添加 sd 卡读写权限
二、具体使用方法
注记:
我们需要同时下载多个文件时,一般是使用压缩包来实现。
一、AndroidManifest.xml 添加 sd 卡读写权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
二、具体使用方法
/*** @param zipFile zip压缩包路径* @param folderPath 解压文件存放路径*/public void unzipFile(String zipFile, String folderPath) {try {ZipFile zfile = null;// 转码为GBK格式,支持中文zfile = new ZipFile(zipFile);Enumeration zList = zfile.entries();ZipEntry ze = null;byte[] buf = new byte[1024 * 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这样的,是为了返回实体的FileFile realFile = getRealFileName(folderPath, ze.getName());fos = new FileOutputStream(realFile);os = new BufferedOutputStream(fos);InputStream is = null;is = new BufferedInputStream(zfile.getInputStream(ze));int readLen = 0;// 进行一些内容复制操作while ((readLen = is.read(buf, 0, 1024)) != -1) {os.write(buf, 0, readLen);}is.close();os.close();}zfile.close();//解压完成后,删除压缩包文件(此处根据需要可进行删除)File file = new File(zipFile);file.delete();Toast.makeText(MyActivity.this, "解压成功!", Toast.LENGTH_LONG).show();} catch (Exception e) {e.printStackTrace();Toast.makeText(MyActivity.this, "解压失败!", Toast.LENGTH_LONG).show();}}
此方法亲测可以解压多级目录的压缩包,但是也有一个问题。压缩包内的空文件夹,解压之后的该文件就不存在了(该bug在我当前使用的项目中无影响,暂未修改)。
注记:
压缩包内的空文件在解压后不存在的修改思路:
Enumeration zList = zfile.entries();
ZipEntry ze = (ZipEntry) zList.nextElement();
当 ze.getSize() 不在大于 0 时,此时就是空文件夹,使用 ze.getName() 可获取空文件夹名,然后我们再去相应的路径下去创建它就OK了。
Android 解压zip压缩包 (压缩包内有多级目录)相关推荐
- 【解压zip.00**压缩包】
[解压zip.00**压缩包] 1 解压 .zip.001 .zip.002 .zip.003 1.1 方法一[网上的方法,亲测未成功] 1.2 方法二[win11系统下,亲测成功] 2 解压 *** ...
- Android 解压zip文件
过了n多天后,当再次使用原先博客上写的那篇: Android 压缩解压zip文件 去做zip包的解压的时候,出现了原来没有发现的很多问题.首先是中文汉字问题,使用java的zip包不能很好的解决解压问 ...
- Android 解压 Zip 压缩文件
文章目录 1.简介 2.代码结构 3.AndroidManifest.xml 添加 sd 卡读写权限 4.MainActivity 文件 5.效果查看 1.简介 Android 解压 SD卡 里的 z ...
- Android解压zip rar 7z文件
添加依赖 implementation 'org.apache.commons:commons-compress:1.23.0' implementation 'com.github.junrar:j ...
- Android 解压zip文件你知道多少?
对于Android常用的压缩格式ZIP,你了解多少? Android的有两种解压ZIP的方法,你知道吗? ZipFile和ZipInputStream的解压效率,你对比过吗? 带着以上问题,现在就开始 ...
- 安卓UI图分离器(支持ios@2x3x图转成安卓xhdpi,xxhdpi图,最新支持拖入并自动解压.zip图片压缩包)
如果UI是个ios粉的话,可能给的切图可能只会给ios分类,而不会给安卓分类,这样安卓用图片资源的话就苦逼了,,,如下图... 人生苦啊... 思来想去,这种搬砖的活应该交给程序来做,于是花了点时间写 ...
- 微信小程序文件下载及在线打开指定文档,解压Zip格式压缩包
1.微信小程序文件下载 wx.downloadFile({url:'https://www.baidu.com/test', //(仅为示例接口,注:这里的域名需要到小程序公众平台添加)filePat ...
- 使用Java解压zip格式压缩包
Maven引用 使用了apache的 ZipArchiveEntry 和 FileUtils ,具体的maven引用如下(版本按需指定) <!-- https://mvnrepository.c ...
- Android 解压 Zip 压缩文件
一.AndroidManifest.xml 添加 sd 卡读写权限 <uses-permission android:name="android.permission.WRITE_EX ...
最新文章
- haskell读写文件相关(含二进制)
- Spring与Hibernate整合中,使用OpenSessionInViewFilter后出现sessionFactory未注入问题
- 赛灵思推7nm加速平台:面向所有场景、所有开放者,AI推理性能提升8倍
- 走出海量数据及访问量压力困境
- 动易html编辑器,解决动易后台编辑器(混合模式,编织模式不可用变灰
- 计算机组成原理实验报告 实验五 三人表决电路实验
- java 阿拉伯数字日期转换为中文大写日期方法_日期转换为中文大写数字
- win10如何共享计算机网络打印机,win10如何共享打印机给其它电脑,Win10设置打印机共享操作步骤...
- 如何通过vin及发动机号查询车辆出险、理赔、事故记录
- XPS文件怎么打开?可以转成PDF格式吗?
- 如何在 WordPress 中启用WebP 图片?webp有什么优势?
- java文件上传后台
- 京东JD App签名/加密算法研究
- 简单通俗易懂 汽车入门知识图解大集合
- 335x系列平台-ADC接口配置和最大采样速率
- IDEA自定义模板:快速指定一个数据库映射字段(驼峰生成下划线命名)
- Python | 人脸识别系统 — 活体检测
- 确定性网络:从“尽力而为”到“确定承诺”
- 计算机机房空调原理,图解机房空调原理
- Python实现ALO蚁狮优化算法优化支持向量机分类模型(SVC算法)项目实战
热门文章
- 关于获取微信小程序码的“47001”错误码的坑
- python爬取考研成绩什么时候出来_Python 爬取揭秘,你的考研调剂对手就有谁?...
- web网页设计期末课程大作业 基于HTML+CSS仿苹果商城电商项目的设计与实现
- lvds接口屏线安装图解_lvds液晶屏幕接口详细讲解
- jsp的文件操作(二)
- 鸟哥的linux私房菜一书
- 原生JS鼠标移动拖尾效果
- Ue4制作鼠标拖尾效果
- CCNP路由实验之十一 IPv6 (8月5号账号被盗,乱发博文深表抱歉,感谢客服帮忙取回密码)
- pwnable.kr第七八题 input leg