Android 解压 Zip 压缩文件
文章目录
- 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 压缩文件相关推荐
- Android 解压 Zip 压缩文件
一.AndroidManifest.xml 添加 sd 卡读写权限 <uses-permission android:name="android.permission.WRITE_EX ...
- java util zip.zipexc,JAVA解压zip压缩文件的实例
今天在弄一个东西,需要在PL/SQL中解压zip的压缩包,刚开始的时候是想着直接在PLSQL中调用java,在java里面调用unzip的shell命令来解析压缩文件,但是比较悲剧,一直老是失败,在尝 ...
- Linux unzip的使用方法 怎么使用unzip解压zip压缩文件
执行unzip --h可以查看全部unzip的用法 UnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler. Send b ...
- python h5s文件 压缩_如何用python解压zip压缩文件
前言:python在办公上非常有用,它可以解压文件,可以处理表格,还可以操作浏览器,只要你能想到的功能,它都能做到,今天笔者就为大家介绍一下如何用处理压缩文件. 打开cmd,输入python3,今天的 ...
- python 图像压缩后前端解压_Python在后台自动解压各种压缩文件的实现方法
1.需求描述 编写一个 Python 程序,每次下载压缩包形式的文件后,自动将内部文件解压到当前文件夹后将压缩包删除,通过本案例可以学到的知识点: os 模块综合应用 glob 模块综合应用 利用 g ...
- fatjar打包mysql_一个简单的解压ZIP Excl文件---gt;按时间读取Excle文件,通过Fat jar打成jar相对应的添加到mysql数据库中。 - 明月 - ITeye博客...
写道 一个简单的解压ZIP Excl文件--->按时间读取Excle文件,通过Fat jar打成jar相对应的添加到mysql数据库中. package common.gaoyang; impo ...
- linux常用解压和压缩文件的命令
linux常用解压和压缩文件的命令 .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ---- ...
- Linux 解压,压缩文件--tar 命令
其实在Linux中,有许多种解压,压缩文件的命令,本博客介绍 tar 命令 如果Linux 系统不能运行tar 命令的朋友,先安装一下: 1)安装 1.apt-get 方式安装: sudo apt-g ...
- 递归遍历文件夹,递归解压,压缩文件,写解压和压缩过程的日志,
前言:好久好久没另写一篇博客了,都是在更新QT常用函数里面内容,这瘟疫影响了我躁动奋进的心,又是大半年没努力了,气人! 这次做的是个多个压缩包 将压缩包里面的内容合并起来 打包成对应的压缩包的工具. ...
最新文章
- rk3399 采集摄像头数据_[Camera]摄像头镜像
- nb-iot简介【转】
- 计算机办公自动化考题,办公自动化试题(附答案).doc
- python selenium 等待元素出现_Python Selenium等待加载几个元素
- boost官方文档同步机制Synchronization mechanisms overview
- jeecg之弹窗插件lhgdialog小结
- html载入图片代码,TextVeiw加载HTML代码块内图片
- 浅谈代码审计入门实战:某博客系统最新版审计之旅
- lucene-SpanQuery跨度查询基础
- Node.js开发框架Express4.x
- 收藏里的文档web service说明
- 【软件工程】中国大学软件工程MOOC学习记录
- node.js室内装修风格选择系统毕业设计-附源码211552
- 等保三级核心-物理安全
- 史上最全的Go语言模块(Module)管理详解(基于Go1.19)
- 抢占氢能产业发展风口,上海重塑能源集团股份有限公司助推行业发展
- 云南通报5起森林火灾,如何去扑救?如何自救?
- 开发版linux随身wifi,让linux下无线网卡变身随身wifi
- 【Java数据结构与算法】Java如何实现环形队列
- 微信公众号历史消息栏设置
热门文章
- [PTA] 甜甜的acm
- 泰山OFFICE技术讲座:关于微软雅黑字体,渲染的差异
- 嵌入式软件调试技术 读书笔记
- 拉普拉斯分布,高斯分布,L1 L2
- 谁说菜鸟不会数据分析(入门篇)----- 学习笔记2(结构为王:确定分析思路 4P 5W2H )
- 小程序使用getUserInfo获取用户信息失败
- react native 上拖拽元素
- 「Activiti精品 悟纤出品」activiti介绍-十万个为什么 - 第321篇
- heic是什么格式?怎么转换成jpg或png?
- “Authentication is not valid“和“Insufficient permission“是同样的意思