为了账号安全,请及时绑定邮箱和手机立即绑定

文件操作之——将assets下压缩包解压到本地指定文件夹

标签:
Android

//本地路径

File sd = Environment.getExternalStorageDirectory();

String outputDirectory = sd.getPath() + "/WDWK/Html";

//方法调用

Utils.unZip(this, "html.zip", outputDirectory,true);


//方法实现

/**

 * 解压assets的zip压缩文件到指定目录

 * 

 * @param context上下文对象

 * @param assetName压缩文件名

 * @param outputDirectory输出目录

 * @param isReWrite是否覆盖

 * @throws IOException

 */

public static boolean unZip(Context context, String assetName,

String outputDirectory, boolean isReWrite) throws IOException {

boolean isOk = false;

// 创建解压目标目录

File file = new File(outputDirectory);

// 如果目标目录不存在,则创建

if (!file.exists()) {

file.mkdirs();

}

// 打开压缩文件

InputStream 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()) {

file = new File(outputDirectory + File.separator

+ zipEntry.getName());

// 文件需要覆盖或者是文件不存在

if (isReWrite || !file.exists()) {

file.mkdir();

}

} else {

// 如果是文件

file = new File(outputDirectory + File.separator

+ zipEntry.getName());

// 文件需要覆盖或者文件不存在,则解压文件

if (isReWrite || !file.exists()) {

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();

return isOk = true;

}

原文链接:http://www.apkbus.com/blog-19685-61627.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消