解压assets下的zip包并复制相应的文件

public static boolean unzipPackage(String zipname) {
        LogUtil.v(TAG, "unzip");
        InputStream input;
        ZipInputStream zis;
        String dirName;
        String fileName;
        Context context = HybridApplication.getContext();
        try {
            input = context.getAssets().open(zipname);
            zis = new ZipInputStream(new BufferedInputStream(input));
            ZipEntry zipEntry;
            byte[] buffer = new byte[1024];
            int count;

            LogUtil.v(TAG, "unzip " + context.getFilesDir().toString());
            File path = context.getFilesDir();

            while ((zipEntry = zis.getNextEntry()) != null) {
                //filename = formatDirectory(zipEntry.getName());
                dirName = getDirectory(zipEntry.getName());
                if (zipEntry.isDirectory()) {
                    File directory = new File(context.getFilesDir().getAbsolutePath() + File.separator + dirName);
                    if (!directory.exists()) {
                        directory.mkdir();
                    }
                    continue;

                }


                fileName = getFileName(zipEntry.getName());
                //File fileDir = context.getDir(dirName, Context.MODE_PRIVATE);
                File fileDir = new File(context.getFilesDir().getAbsolutePath() + File.separator + dirName);
                File newFile = new File(fileDir, fileName);
                FileOutputStream fos = new FileOutputStream(newFile);

                while ((count = zis.read(buffer)) != -1) {
                    fos.write(buffer, 0, count);
                }
                fos.close();
                zis.closeEntry();
            }
            zis.close();
        } catch (IOException e) {
            LogUtil.v("PackageUpdater", "unzip failed");
            e.printStackTrace();
            return false;
        } finally {
        }
        return true;
    }

    /**
     * 从资源路径中获取目录
     * @param url
     * @return
     */
    private static String getDirectory(String url) {
        return url.substring(0, url.lastIndexOf("/"));
    }

    /**
     * 从资源目录中获取文件名
     * @param url
     * @return
     */
    private static String getFileName(String url) {
        return url.substring(url.lastIndexOf("/") + 1, url.length());
    }
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

jxindong

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值