예제 #1
0
 public void doit(String archiveFilename) {
   f.clear();
   try {
     tar = new TarInputStream(new GZIPInputStream(new FileInputStream(archiveFilename)));
     while ((current = tar.getNextEntry()) != null) {
       System.err.println("ok:" + current.getName());
       long s = current.getSize();
       if (!current.isDirectory()) {
         // System.err.println(current.getFile());
         f.prepareForBulkInsert(tar, current.getName());
       }
     }
   } catch (Exception e) {
     e.printStackTrace();
   }
   f.flushFiles();
 }
  public boolean extractTar(String asset, String target) {

    byte buf[] = new byte[1024 * 1024];

    InputStream assetStream = null;
    TarInputStream tis = null;

    try {
      assetStream = mAssetManager.open(asset, AssetManager.ACCESS_STREAMING);
      tis =
          new TarInputStream(
              new BufferedInputStream(
                  new GZIPInputStream(new BufferedInputStream(assetStream, 8192)), 8192));
    } catch (IOException e) {
      Log.e("python", "opening up extract tar", e);
      return false;
    }

    while (true) {
      TarEntry entry = null;

      try {
        entry = tis.getNextEntry();
      } catch (java.io.IOException e) {
        Log.e("python", "extracting tar", e);
        return false;
      }

      if (entry == null) {
        break;
      }

      Log.i("python", "extracting " + entry.getName());

      if (entry.isDirectory()) {

        try {
          new File(target + "/" + entry.getName()).mkdirs();
        } catch (SecurityException e) {
        }
        ;

        continue;
      }

      OutputStream out = null;
      String path = target + "/" + entry.getName();

      try {
        out = new BufferedOutputStream(new FileOutputStream(path), 8192);
      } catch (FileNotFoundException e) {
      } catch (SecurityException e) {
      }
      ;

      if (out == null) {
        Log.e("python", "could not open " + path);
        return false;
      }

      try {
        while (true) {
          int len = tis.read(buf);

          if (len == -1) {
            break;
          }

          out.write(buf, 0, len);
        }

        out.flush();
        out.close();
      } catch (java.io.IOException e) {
        Log.e("python", "extracting zip", e);
        return false;
      }
    }

    try {
      tis.close();
      assetStream.close();
    } catch (IOException e) {
      // pass
    }

    return true;
  }