zip解压文件夹方法

/**
 *
 *
 * 解压工具类,耗时操作,应当放在异步线程中
 */
    public void getAnalysis(final String inUri, final String targUri, final int uncompressType) {

                try {
                    /**
                     *
                     * 开始解压
                     */
                    ZipInputStream Zin = new ZipInputStream(new FileInputStream(inUri));//输入源zip路径
                    BufferedInputStream Bin = new BufferedInputStream(Zin);
                    String Parent = targUri; //输出路径(文件夹目录)
                    File Fout = null;
                    ZipEntry entry;
                    try {
                        while ((entry = Zin.getNextEntry()) != null ) {

                            String name=entry.getName();
                      /** 
                       *
                        * 替换掉和系统不符合的目录符号 
            */
                if(name.contains("\\")){
                   name= name.replace("\\",File.separator);
                }else if(name.contains("/")){
                  name=  name.replace("/",File.separator);
                }
                         
                            Fout = new File(targUri+File.separator+name);

                            /**
                             * 删除旧的文件
                             */
                            if(Fout.exists()){
                                Fout.delete();
                            }

                            File parent= Fout.getParentFile();
                            if(!parent.exists()){
                                parent.mkdirs();
                            }

                            if( !entry.isDirectory()){

                                if(!Fout.exists()){
                                    Fout.createNewFile();
                                }
                                FileOutputStream out = new FileOutputStream(Fout);
                                BufferedOutputStream Bout = new BufferedOutputStream(out);
                                int b;
                                while ((b = Bin.read()) != -1) {
                                    Bout.write(b);
                                }
                                Bout.flush();
                                Bout.close();
                                out.close();
                                System.out.println(Fout + "解压成功");
                            }else {
                                Fout.mkdirs();
                                continue;
                            }

                        }
                        Bin.close();
                        Zin.close();

                        /**
                         * 解压完毕
                         * 提醒下一步
                         *
                         *
                         */
                        chioceMetch(uncompressType);// 这一步和解压物关,不用的可以删除
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    }
                } catch (IOException e) {
                    Log.e("test",e.toString());
                }
    }

转载于:https://my.oschina.net/u/2502529/blog/731310

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值