private void doDownload()

in stetho/src/main/java/com/facebook/stetho/dumpapp/plugins/FilesDumperPlugin.java [115:153]


  private void doDownload(PrintStream writer, Iterator<String> remainingArgs)
      throws DumpUsageException {
    String outputPath = ArgsHelper.nextArg(remainingArgs, "Must specify output file or '-'");
    ArrayList<File> selectedFiles = new ArrayList<>();
    while (remainingArgs.hasNext()) {
      selectedFiles.add(resolvePossibleAppStoragePath(mContext, remainingArgs.next()));
    }

    try {
      OutputStream outputStream;
      if ("-".equals(outputPath)) {
        outputStream = writer;
      } else {
        outputStream = new FileOutputStream(resolvePossibleSdcardPath(outputPath));
      }
      ZipOutputStream output = new ZipOutputStream(new BufferedOutputStream(outputStream));
      boolean success = false;
      try {
        byte[] buf = new byte[2048];
        if (selectedFiles.size() > 0) {
          addFiles(output, buf, selectedFiles.toArray(new File[selectedFiles.size()]));
        } else {
          addFiles(output, buf, getBaseDir(mContext).listFiles());
        }
        success = true;
      } finally {
        try {
          output.close();
        } catch (IOException e) {
          Util.close(outputStream, !success);
          if (success) {
            throw e;
          }
        }
      }
    } catch (IOException e) {
      throw new RuntimeException(e);
    }
  }