I’m working on something that requires me to start to subprocess(command prompt) and execute some commands on it. I need to fetch the output from the subprocess and store it in a file or String.
here’s what I have done so far, and it doesn’t work:
public static void main(String args[])
{
try
{
Runtime RT = Runtime.getRuntime();
String command = "cmd /c start javap java.lang.String";
File file = new File("write.txt");
Writer output = new BufferedWriter(new FileWriter(file));
BufferedReader br = new(BufferedReader(newInputStreamReader(RT.exec(command).getInputStream()));
String temp = br.readLine();
while(!temp.equals(null))
{
output.write(temp);
temp = br.readLine();
}
output.close();
RT.exec("exit");
}
catch(Exception e)
{
System.out.println(e);
}
}
Start changing this:To:
Compile and see if you still have the problem
edit
Also, there is a good reason why you shouldn’t catch Exception, you also catch programming errors like a
NullPointerExceptionChange it with:
Finally you don’t have to “exit” since you’re not inside the cmd really.
Corrected version
This version runs as you intend:
edit
Final remarks:
Since Java 1.5 the preferred way to invoke a command is using ProcessBuilder and it is better if you use an array of strings instead of a single string ( or varargs ).
When you’re building your output you can get rid of the file object and pass the file name directly to the filewriter.
While reading the line you can assign and evaluate in the condition.
Java’s coding conventions suggest to use the opening brace in the same like.
This would be my version of your code:
It might need still some work, but I hope it helps you.