java adb在运行时拉取文件

java adb在运行时拉取文件,java,android,avd,Java,Android,Avd,我想在运行时从运行的android avd中提取一个文件,并执行以下操作: String[] cmd ={ "adb pull /sdcard/dataFolder/dataFile /path/folder/"}; try{ Process pr = run.exec(cmd); pr.waitFor(); System.out.println("cmd execution done"); pr.destroy(); } catch (IOExcepti

我想在运行时从运行的android avd中提取一个文件,并执行以下操作:

String[] cmd ={ "adb pull /sdcard/dataFolder/dataFile /path/folder/"};
try{
     Process pr = run.exec(cmd);
     pr.waitFor();
     System.out.println("cmd execution done");
     pr.destroy();
} catch (IOException e) {
     System.out.println("IOException");
     e.printStackTrace();
} catch (InterruptedException e) {
     System.out.println("InterruptedException");
     e.printStackTrace();
}

它会打印“cmd execution done”,但不会将文件拉入本地文件夹。使用来自终端的相同命令,它可以工作。我错在哪里

使用adb的绝对路径,包括adb可执行文件的绝对路径引发IOException。不包括它(在路径中有可执行文件)它打印“cmd execution done”,但不执行任何操作。
stdout
当您的
cmd execution done
现在,我将cmd修改为:file dir=new file(“adb绝对路径”);字符串[]adbShell={“adb”、“shell”、“mkdir”、“/sdcard/createdFolder”};进程pr=run.exec(adbShell,null,dir);但是标准说明:环境为空。我应该在环境字符串[]中放置什么而不是null?如果我也尝试使用以下命令,则始终运行IOException命令:字符串[]cmd={“/bin/bash”,“mkdir.sh”};进程p=Runtime.getRuntime().exec(cmd,null,dir);其中dir是mkdir.sh文件的路径。有什么想法吗?