如何使用java在linux中运行基本命令?

时间:2014-07-02 09:05:40

标签: java linux

我有一个类文件说,abc.class是从abc.java编译的 在尝试执行此java程序时,我没有在控制台中获取输出。 我在linux环境下执行了这个文件。 该文件包含一个吸引重要性的行:

Runtime rt = Runtime.getRuntime();
String a = "ls";

Process proc = null;
try {
    proc = rt.exec(a);
}

注意:在执行程序时,提示不存在,我认为这可能是'ls'没有通过我的程序执行的原因。我没有收到任何错误。 我担心一旦文件执行,我将在提示符中获取文件列表。 希望我能让所有人了解我的问题。 我可以对这个问题有任何意见。你有价值的

2 个答案:

答案 0 :(得分:0)

您的命令应该被执行,但是您的输出不会被打印,因为默认情况下输出不会被定向到您的控制台,为了在控制台上获得输出,您只需要从您的进程获取输入流并需要读取它。

Runtime rt = Runtime.getRuntime();
String a = "ls";

  Process proc = null;
  try
  {
    proc = rt.exec(a);
    proc.waitFor();
    BufferedReader reader =  new BufferedReader(new InputStreamReader(proc.getInputStream())); 

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

答案 1 :(得分:0)

这有效:

Runtime rt = Runtime.getRuntime();
String a = "/bin/ls";

    Process proc = rt.exec(a);
    proc.waitFor();
    InputStream is = proc.getInputStream();
    InputStreamReader isr = new InputStreamReader( is );
    BufferedReader br = new BufferedReader( isr );
    String line;
    while( (line = br.readLine() ) != null ){
    System.out.println( line );
    }
    br.close();
    // to see errors:
    System.out.println( "*** error output ***" );
    InputStream isErr = proc.getErrorStream();
    InputStreamReader isrErr = new InputStreamReader( isErr );
    BufferedReader brErr = new BufferedReader( isrErr );
    String line;
    while( (line = brErr.readLine() ) != null ){
    System.out.println( line );
    }
    brErr.close();