Presta atención ya que en esta sección vas a hallar el resultado que buscas.
Solución:
Utilice getErrorStream().
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getErrorStream()));
EDITAR:
Puede usar ProcessBuilder (y también leer la documentación)
ProcessBuilder ps=new ProcessBuilder("java.exe","-version");
//From the DOC: Initially, this property is false, meaning that the
//standard output and error output of a subprocess are sent to two
//separate streams
ps.redirectErrorStream(true);
Process pr = ps.start();
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
while ((line = in.readLine()) != null)
System.out.println(line);
pr.waitFor();
System.out.println("ok!");
in.close();
System.exit(0);
Tenga en cuenta que estamos leyendo la salida del proceso línea por línea en nuestro StringBuilder
. Debido a la try-with-resources
declaración no necesitamos cerrar la transmisión manualmente. El ProcessBuilder
class vamos a enviar el nombre del programa y el número de argumentos a su constructor.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ProcessOutputExample
public static void main(String[] arguments) throws IOException,
InterruptedException
System.out.println(getProcessOutput());
public static String getProcessOutput() throws IOException, InterruptedException
ProcessBuilder processBuilder = new ProcessBuilder("java",
"-version");
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
StringBuilder processOutput = new StringBuilder();
try (BufferedReader processOutputReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));)
String readLine;
while ((readLine = processOutputReader.readLine()) != null)
processOutput.append(readLine + System.lineSeparator());
process.waitFor();
return processOutput.toString().trim();
Huellas dactilares:
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
Ya tiene el objeto de proceso (nombre pr). Puede obtener el flujo de entrada, salida y error. En su caso, desea pr.getInputStream(). Lea de eso, que está conectado a la salida del proceso.
Comentarios y valoraciones del tutorial
No se te olvide difundir esta sección si te ayudó.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)