Runtime.getRuntime()。exec(“ls”)没有输出

时间:2014-01-10 02:12:57

标签: java

ping和date返回输出,但它没有从“ls”或“pwd”返回任何内容。我最想做的是运行SSH命令。知道我在下面缺少什么吗?

//Works and shows the output
executeCommand("ping -c 3 " + "google.com");

//Works and shows the output
executeCommand("date");

//Does not work. No output
executeCommand("sudo ls");

//Does not work. No output
executeCommand("ls");


private void executeCommand(String command) {

 StringBuffer output = new StringBuffer();

 Process p;
  try {
    p = Runtime.getRuntime().exec(command);
    p.waitFor();
    BufferedReader reader = 
    new BufferedReader(new InputStreamReader(p.getInputStream()));

    String line = "";           
    while ((line = reader.readLine())!= null) {
       output.append(line + "\n");
    }

 } catch (Exception e) {
    e.printStackTrace();
}

    Log.d("Output", "Output: " + output.toString());


}

1 个答案:

答案 0 :(得分:0)

我有两个解决方案

第一个解决方案(您需要Java 7):

...
ProcessBuilder pb = new ProcessBuilder("ls");
pb.redirectOutput(Redirect.INHERIT);
Process p = pb.start();

第二个解决方案:

    Process p=Runtime.getRuntime().exec("ls");

    InputStream is = p.getInputStream();
    int c;
    StringBuilder commandResponse = new StringBuilder();

    while( (c = is.read()) != -1) {
        commandResponse.append((char)c);
    }
    System.out.println(commandResponse);
    is.close();