Mantén la atención ya que en esta noticia vas a encontrar la solución que buscas.
Solución:
Este es el camino a seguir:
Runtime rt = Runtime.getRuntime();
String[] commands = "system.exe", "-get t";
Process proc = rt.exec(commands);
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(proc.getErrorStream()));
// Read the output from the command
System.out.println("Here is the standard output of the command:n");
String s = null;
while ((s = stdInput.readLine()) != null)
System.out.println(s);
// Read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):n");
while ((s = stdError.readLine()) != null)
System.out.println(s);
Lea el Javadoc para obtener más detalles aquí. ProcessBuilder
sería una buena opción para usar.
Una forma más rápida es esta:
public static String execCmd(String cmd) throws java.io.IOException
java.util.Scanner s = new java.util.Scanner(Runtime.getRuntime().exec(cmd).getInputStream()).useDelimiter("\A");
return s.hasNext() ? s.next() : "";
Que es básicamente una versión condensada de esto:
public static String execCmd(String cmd) throws java.io.IOException
Process proc = Runtime.getRuntime().exec(cmd);
java.io.InputStream is = proc.getInputStream();
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\A");
String val = "";
if (s.hasNext())
val = s.next();
else
val = "";
return val;
Sé que esta pregunta es antigua, pero estoy publicando esta respuesta porque creo que esto puede ser más rápido.
Editar (para Java 7 y superior)
Necesita cerrar Streams y Scanners. Usando AutoCloseable para un código ordenado:
public static String execCmd(String cmd)
String result = null;
try (InputStream inputStream = Runtime.getRuntime().exec(cmd).getInputStream();
Scanner s = new Scanner(inputStream).useDelimiter("\A"))
result = s.hasNext() ? s.next() : null;
catch (IOException e)
e.printStackTrace();
return result;
Si el uso ya tiene Apache commons-io disponible en la ruta de clases, puede usar:
Process p = new ProcessBuilder("cat", "/etc/something").start();
String stderr = IOUtils.toString(p.getErrorStream(), Charset.defaultCharset());
String stdout = IOUtils.toString(p.getInputStream(), Charset.defaultCharset());
Sección de Reseñas y Valoraciones
Si tienes alguna indecisión o forma de ascender nuestro sección te insinuamos ejecutar una anotación y con gusto lo analizaremos.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)