Ejecutar un comando del sistema

jagascon
26 de Enero del 2004
Saludos. Desearía que alguien me hechase una mano. Necesito conocer cómo puedo hacer para ejecutar un comando del sistema. Además también desearía que al ejecutarlo obtuviese una cadena con el resultado de la ejecución del comando. Por ejemplo:
Linux MS-DOS
# ls C:> dir
Y que el resultado de esto me devolviese una cadena con el listado del directorio actual.
También quisiese saber cómo hago para averiguar el nombre del usuario actual del sistema, pero concretamente en un sistema Linux (También me interesaría en uno Windows). Es decir, si yo estoy trabajando como root, obtener este nombre, root. (¡Qué ejemplo más tonto!)
Te agradezco tu ayuda. Gracias.

chuidiang
26 de Enero del 2004
Mas o menos seria algo como esto

// Obtienes un Runtime
Runtime r = Runtime.getRuntime();

// Le mandas ejecutar el comando
Process p = r.exec ("ls c:"); // No redirijas la salida a un fichero, no hace falta.

// Obtienes la salida del proceso (que para java es stream de entrada).
InputStream salida = p.getInputStream();

Ahora puedes leer de salida la salida del comando. Si los metodos no te gustan, puedes hacer un new DataInputStream (salida), que tiene metodos mas comodos.

En cuanto al usuario, su nombre se obtiene con

String usuario = (String)System.getProperty ("user.name");

Se bueno