Java 读取命令的实时输出

Java 读取命令的实时输出,java,android,Java,Android,如何从Java读取shell命令的实时输出 这是我到目前为止得到的,但它在执行命令后打印: try { proc = Runtime.getRuntime().exec("du -d 1 /sdcard/"); InputStream inputStream = proc.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream); Buff

如何从Java读取shell命令的实时输出

这是我到目前为止得到的,但它在执行命令后打印:

try {
    proc = Runtime.getRuntime().exec("du -d 1 /sdcard/");

    InputStream inputStream = proc.getInputStream();
    InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

    while ((line = bufferedReader.readLine()) != null) {
        publishProgress(i);
        i++;
        System.out.println(line); // it prints all at once after command has been executed.
    }
}
catch (IOException e) {
    Log.e("du","error "+e.getMessage());
}
试试这个:

try {
 proc = Runtime.getRuntime().exec("du -d 1 /sdcard/");

 InputStream inputStream = proc.getInputStream();
 InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
 BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

 while ((line = bufferedReader.readLine()) != null) {
    System.out.println(line); // it prints all at once after command has been executed.
 }
 proc.waitFor();
}
catch (IOException e) {
 Log.e("du","error "+e.getMessage());
}

顺便问一下,您在哪里看到
System.out.println的输出?您的输出中只有一行吗?
du
非常快。但是,您是否尝试过ProcessBuilder和Process.start?@pedja在LogCat中可以看到
Log
方法的输出,而不是
System.out.println
No。它的命令
du
来自linux。扫描整个文件夹并显示大小