文章目录

  • 1、简介
  • 2、代码结构
  • 3、AndroidManifest.xml 添加 sd 卡读写权限
  • 4、MainActivity 文件
  • 5、效果查看

1、简介

Android 解压 SD卡 里的 zip 压缩的文件

2、代码结构

1)AndroidManifest.xml 文件 添加权限
2)MainActivity 功能实现

3、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"/>

4、MainActivity 文件

package com.example.tssh.myunzip;import android.Manifest;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.CRC32;
import java.util.zip.CheckedInputStream;
import java.util.zip.ZipInputStream;public class MainActivity extends AppCompatActivity {private String TAG  = "MainActivity: ";private String zipPtath = "/storage/emulated/0/testunzip/test.zip";//压缩包路径private String  unzipPath = "/storage/emulated/0/testunzip/";//解压路径@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);checkPermission();unzipFile(zipPtath,unzipPath);}public void unzipFile(String zipPtath, String outputDirectory)throws IOException {/*** 解压assets的zip压缩文件到指定目录* @param context上下文对象* @param assetName压缩文件名* @param outputDirectory输出目录* @param isReWrite是否覆盖* @throws IOException*/Log.i(TAG,"开始解压的文件: "  + zipPtath + "\n" + "解压的目标路径:" + outputDirectory );// 创建解压目标目录File file = new File(outputDirectory);// 如果目标目录不存在,则创建if (!file.exists()) {file.mkdirs();}// 打开压缩文件InputStream inputStream = new FileInputStream(zipPtath); ;ZipInputStream zipInputStream = new ZipInputStream(inputStream);// 读取一个进入点ZipEntry zipEntry = zipInputStream.getNextEntry();// 使用1Mbufferbyte[] buffer = new byte[1024 * 1024];// 解压时字节计数int count = 0;// 如果进入点为空说明已经遍历完所有压缩包中文件和目录while (zipEntry != null) {Log.i(TAG,"解压文件 入口 1: " +zipEntry );if (!zipEntry.isDirectory()) {  //如果是一个文件// 如果是文件String fileName = zipEntry.getName();Log.i(TAG,"解压文件 原来 文件的位置: " + fileName);fileName = fileName.substring(fileName.lastIndexOf("/") + 1);  //截取文件的名字 去掉原文件夹名字Log.i(TAG,"解压文件 的名字: " + fileName);file = new File(outputDirectory + File.separator + fileName);  //放到新的解压的文件路径file.createNewFile();FileOutputStream fileOutputStream = new FileOutputStream(file);while ((count = zipInputStream.read(buffer)) > 0) {fileOutputStream.write(buffer, 0, count);}fileOutputStream.close();}// 定位到下一个文件入口zipEntry = zipInputStream.getNextEntry();Log.i(TAG,"解压文件 入口 2: " + zipEntry );}zipInputStream.close();Log.i(TAG,"解压完成");}//sd 卡权限动态申请 private void checkPermission() {if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},100);}}@Overridepublic void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {if(requestCode == 100){if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {Log.d(TAG, "");}}}
}

5、效果查看


文献参考:
android 从assets目录解压zip到本地sdCard
https://blog.csdn.net/ding1145536113/article/details/42676849

Android端解压zip文件(包含中文目录)
https://blog.csdn.net/bjst72636916yle/article/details/

Android解压sd卡里面Zip压缩文件
https://blog.csdn.net/bjstyle/article/details/72636916

Android 解压 Zip 压缩文件相关推荐

  1. Android 解压 Zip 压缩文件

    一.AndroidManifest.xml 添加 sd 卡读写权限 <uses-permission android:name="android.permission.WRITE_EX ...

  2. java util zip.zipexc,JAVA解压zip压缩文件的实例

    今天在弄一个东西,需要在PL/SQL中解压zip的压缩包,刚开始的时候是想着直接在PLSQL中调用java,在java里面调用unzip的shell命令来解析压缩文件,但是比较悲剧,一直老是失败,在尝 ...

  3. Linux unzip的使用方法 怎么使用unzip解压zip压缩文件

    执行unzip --h可以查看全部unzip的用法 UnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler. Send b ...

  4. python h5s文件 压缩_如何用python解压zip压缩文件

    前言:python在办公上非常有用,它可以解压文件,可以处理表格,还可以操作浏览器,只要你能想到的功能,它都能做到,今天笔者就为大家介绍一下如何用处理压缩文件. 打开cmd,输入python3,今天的 ...

  5. python 图像压缩后前端解压_Python在后台自动解压各种压缩文件的实现方法

    1.需求描述 编写一个 Python 程序,每次下载压缩包形式的文件后,自动将内部文件解压到当前文件夹后将压缩包删除,通过本案例可以学到的知识点: os 模块综合应用 glob 模块综合应用 利用 g ...

  6. fatjar打包mysql_一个简单的解压ZIP Excl文件---gt;按时间读取Excle文件,通过Fat jar打成jar相对应的添加到mysql数据库中。 - 明月 - ITeye博客...

    写道 一个简单的解压ZIP Excl文件--->按时间读取Excle文件,通过Fat jar打成jar相对应的添加到mysql数据库中. package common.gaoyang; impo ...

  7. linux常用解压和压缩文件的命令

    linux常用解压和压缩文件的命令 .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ---- ...

  8. Linux 解压,压缩文件--tar 命令

    其实在Linux中,有许多种解压,压缩文件的命令,本博客介绍 tar 命令 如果Linux 系统不能运行tar 命令的朋友,先安装一下: 1)安装 1.apt-get 方式安装: sudo apt-g ...

  9. 递归遍历文件夹,递归解压,压缩文件,写解压和压缩过程的日志,

    前言:好久好久没另写一篇博客了,都是在更新QT常用函数里面内容,这瘟疫影响了我躁动奋进的心,又是大半年没努力了,气人! 这次做的是个多个压缩包 将压缩包里面的内容合并起来 打包成对应的压缩包的工具. ...

最新文章

  1. rk3399 采集摄像头数据_[Camera]摄像头镜像
  2. nb-iot简介【转】
  3. 计算机办公自动化考题,办公自动化试题(附答案).doc
  4. python selenium 等待元素出现_Python Selenium等待加载几个元素
  5. boost官方文档同步机制Synchronization mechanisms overview
  6. jeecg之弹窗插件lhgdialog小结
  7. html载入图片代码,TextVeiw加载HTML代码块内图片
  8. 浅谈代码审计入门实战:某博客系统最新版审计之旅
  9. lucene-SpanQuery跨度查询基础
  10. Node.js开发框架Express4.x
  11. 收藏里的文档web service说明
  12. 【软件工程】中国大学软件工程MOOC学习记录
  13. node.js室内装修风格选择系统毕业设计-附源码211552
  14. 等保三级核心-物理安全
  15. 史上最全的Go语言模块(Module)管理详解(基于Go1.19)
  16. 抢占氢能产业发展风口,上海重塑能源集团股份有限公司助推行业发展
  17. 云南通报5起森林火灾,如何去扑救?如何自救?
  18. 开发版linux随身wifi,让linux下无线网卡变身随身wifi
  19. 【Java数据结构与算法】Java如何实现环形队列
  20. 微信公众号历史消息栏设置

热门文章

  1. [PTA] 甜甜的acm
  2. 泰山OFFICE技术讲座:关于微软雅黑字体,渲染的差异
  3. 嵌入式软件调试技术 读书笔记
  4. 拉普拉斯分布,高斯分布,L1 L2
  5. 谁说菜鸟不会数据分析(入门篇)----- 学习笔记2(结构为王:确定分析思路 4P 5W2H )
  6. 小程序使用getUserInfo获取用户信息失败
  7. react native 上拖拽元素
  8. 「Activiti精品 悟纤出品」activiti介绍-十万个为什么 - 第321篇
  9. heic是什么格式?怎么转换成jpg或png?
  10. “Authentication is not valid“和“Insufficient permission“是同样的意思