任何在反应本机上解压缩文件的方法



设法将.zip文件下载到手机上的文件系统。但是过了一会儿,我意识到我找不到解压缩该文件的方法。正如我尝试的那样:

  • https://github.com/plrthink/react-native-zip-archive
  • https://github.com/remobile/react-native-zip

第一个在要求后立即死亡,收到错误"无法读取未定义的属性'解压缩'"(仔细按照说明进行操作)

第二个死了,因为它依赖于 codrova 端口来反应原生,这也不起作用。

有什么建议或方法可以解决这些问题吗?

使用

react-native 0.35,使用 android 5.1.1 在 Note4 上进行测试。

我最终确实设法解决了我的问题:

使用 react-native-zip-archive

解决方案是更改内部代码:RNZipArchiveModule.java模块内的文件

需要应用的更改写在此注释中:https://github.com/plrthink/react-native-zip-archive/issues/14#issuecomment-261712319

所以要归功于胡九德洋解决问题。

转到这个方向:node_modules\react-native-zip-archive\android\src\main\java\com\rnziparchive\RNZipArchiveModule.java

并替换此代码而不是解压缩方法

public static void customUnzip(File zipFile, File targetDirectory) throws IOException {
    ZipInputStream zis = new ZipInputStream(
            new BufferedInputStream(new FileInputStream(zipFile)));
    try {
      ZipEntry ze;
      int count;
      byte[] buffer = new byte[8192];
      while ((ze = zis.getNextEntry()) != null) {
        File file = new File(targetDirectory, ze.getName());
        File dir = ze.isDirectory() ? file : file.getParentFile();
        if (!dir.isDirectory() && !dir.mkdirs())
          throw new FileNotFoundException("Failed to ensure directory: " +
                  dir.getAbsolutePath());
        if (ze.isDirectory())
          continue;
        FileOutputStream fout = new FileOutputStream(file);
        try {
          while ((count = zis.read(buffer)) != -1)
            fout.write(buffer, 0, count);
        } finally {
          fout.close();
        }
            /* if time should be restored as well
            long time = ze.getTime();
            if (time > 0)
                file.setLastModified(time);
            */
      }
    } finally {
      zis.close();
    }
  }
  //**************************
  @ReactMethod
  public void unzip(final String zipFilePath, final String destDirectory, final String charset, final Promise promise) {
    new Thread(new Runnable() {
      @Override
      public void run() {
        try {
          customUnzip(new File(zipFilePath ) , new File(destDirectory));
        } catch (IOException e) {
          e.printStackTrace();
        }


         }
    }).start();
  }

相关内容

  • 没有找到相关文章

最新更新