android解压sd卡中的压缩文件

    我是用的ZipFile这个类,这里需要说明一下,这个类有两个一个是在org.apache.tool.zip包里,另外一个在java.util.zip包下,这个两个的区别在于后者的解压效率快于前者,但是前者可以解决被解压文件中含有中文字符乱码问题,他们的使用方法基本一致,所以就要看你需要解压的文件里是否包含中文了。


我这里就先用Apache包下的ZipFile来实现了,使用方法:

1.添加读写sd卡的权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

2.创建ZipFile对象,并指定编码格式,避免中文乱码

ZipFile zipFile = new ZipFile(zipFileName,"GBK");

3.获取文件实体集合,也就是获取压缩文件中所有文件的集合

Enumeration e = zipFile.getEntries();//文件实体集合

4.遍历文件实体集合,创建相应的文件夹或者文件,并向文件中写入内容

while(e.hasMoreElements()) {//遍历文件实体集合

                        entry= (ZipEntry) e.nextElement();//获取文件实体

                        InputStream is= zipFile.getInputStream(entry);//获取文件的读操作流

                        File dstFile = new File(entry.getName());//在sd卡的对应目录下创建文件

                        if (!dstFile.exists()) {//判断文件是否存在

                            if (entry.isDirectory()) {//目录类型
                                dstFile.mkdirs();//创建目录
                            } else {//文件类型
                                dstFile.createNewFile();//创建文件
                            }
                        }

                        if (dstFile.isFile()) {//只有文件类型才继续写操作
                            OutputStream fos = new FileOutputStream(dstFile);

                            byte[] buffer = new byte[8192];

                            while ((count = is.read(buffer, 0, buffer.length)) != -1) {

                                fos.write(buffer, 0, count);

                            }

                            if (fos != null) {//别忘了在这里关闭流,否则后面会创建很多io流,造成文件打开太多异常
                                fos.close();
                            }
                        }

                        if (is != null) {//别忘了在这里关闭流,否则后面会创建很多io流,造成文件打开太多异常
                            is.close();
                        }
                    }

5.最后关闭zipFile对象,避免内存泄露

if (zipFile != null) {
                        zipFile.close();
                    }

最后附上包含Apache里ZipFile相关文件的jar包下载链接: 点击打开链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值