tags:

views:

292

answers:

4

I am attempting to be cheap and execute a local system command ('uname -a') in Java. I am looking to grab the output from uname and store it in a String. What is the best way of doing this? Current code:

public class lame
{

public static void main(String args[])
{

try
{

Process p=Runtime.getRuntime().exec("uname -a");

p.waitFor();

BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));

String line=reader.readLine();

while(line!=null)
{

System.out.println(line);

line=reader.readLine();
}

}
catch(IOException e1) {}
catch(InterruptedException e2) {}

System.out.println("finished.");
}
}
+1  A: 

Your way isn't far off from what I'd probably do:

Runtime r = Runtime.getRuntime();
Process p = r.exec("uname -a");
p.waitFor();
BufferedReader b = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";

while ((line = b.readLine()) != null) {
  System.out.println(line);
}

Handle whichever exceptions you care to, of course.

John Feminella
+1  A: 

What you are doing looks fine. If your command is only returning a single string, you don't need the while loop, just store the reader.readLine() value in a single String variable.

Also, you probably should do something with those exceptions, rather than just swallowing them.

Andy White
Yeah, I dont need the loop right? Perfect thanks!
Eric Schulman
A: 

This looks like an answer. Is there a question? If it isn't broken, why fix it?

Gary
+2  A: 

That is the best way to do it. Also you can use the ProcessBuilder which has a variable argument constructor, so you could save a line or two of code

Azder