assets里的zip压缩文件并解压到指定路径下保存
Posted 随波足流
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了assets里的zip压缩文件并解压到指定路径下保存相关的知识,希望对你有一定的参考价值。
有时候发布app,在assets中会自带一些压缩包,打开应用解压放在用户手机sd卡中,
解压这一块就是下面的代码,要判断解压出来的是直接的文件还是一个文件夹,并存储到指定路径下面就好
public
class
UnzipAssets
/** |
* 解压Assets中的文件 |
* @param context上下文对象 |
* @param assetName压缩包文件名 |
* @param outputDirectory输出目录 |
* @throws IOException |
*/ |
public static void unZip(Context context, String assetName,String outputDirectory) throws IOException |
//创建解压目标目录 |
File file = new File(outputDirectory); |
//如果目标目录不存在,则创建 |
if (!file.exists()) |
file.mkdirs(); |
|
InputStream inputStream = null ; |
//打开压缩文件 |
inputStream = context.getAssets().open(assetName); |
ZipInputStream zipInputStream = new ZipInputStream(inputStream); |
//读取一个进入点 |
ZipEntry zipEntry = zipInputStream.getNextEntry(); |
//使用1Mbuffer |
byte [] buffer = new byte [ 1024 * 1024 ]; |
//解压时字节计数 |
int count = 0 ; |
//如果进入点为空说明已经遍历完所有压缩包中文件和目录 |
while (zipEntry != null ) |
//如果是一个目录 |
if (zipEntry.isDirectory()) |
//String name = zipEntry.getName(); |
//name = name.substring(0, name.length() - 1); |
file = new File(outputDirectory + File.separator + zipEntry.getName()); |
file.mkdir(); |
else |
//如果是文件 |
file = new File(outputDirectory + File.separator |
+ zipEntry.getName()); |
//创建该文件 |
file.createNewFile(); |
FileOutputStream fileOutputStream = new FileOutputStream(file); |
while ((count = zipInputStream.read(buffer)) > 0 ) |
fileOutputStream.write(buffer, 0 , count); |
|
fileOutputStream.close(); |
|
//定位到下一个文件入口 |
zipEntry = zipInputStream.getNextEntry(); |
|
zipInputStream.close(); |
|
以上是关于assets里的zip压缩文件并解压到指定路径下保存的主要内容,如果未能解决你的问题,请参考以下文章