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);
}
}