Estoy tratando de leer los resultados de un comando cmd (dir por ejemplo). Después de crear el proceso, utilizo un BufferedReader
junto con un InputStreamReader
. Por algún motivo, el BufferedReader
sigue apareciendo vacío, aunque sé que debe haber algún resultado para leer.Problema con la salida de un comando cmd en java
Aquí está el código que estoy usando:
String[] str = new String[] {"cmd.exe", "/c",
"cd", "c:\\",
"dir", "/b", "/s"
};
Runtime rt = Runtime.getRuntime();
try{
Process p = rt.exec(str);
InputStream is =p.getInputStream();
System.out.println(is.available());
InputStreamReader in = new InputStreamReader(is);
StringBuffer sb = new StringBuffer();
BufferedReader buff = new BufferedReader(in);
String line = buff.readLine();
System.out.println(line);
while(line != null)
{
sb.append(line + "\n");
System.out.println(line);
line = buff.readLine();
}
System.out.println(sb);
if (sb.length() != 0){
File f = new File("test.txt");
FileOutputStream fos = new FileOutputStream(f);
fos.write(sb.toString().getBytes());
fos.close();
}
}catch(Exception ex)
{
ex.printStackTrace();
}
es process.getErrorStream() también volviendo vacío? –
sí - tanto el ErrorStream como el InputStream tienen 0 bytes disponibles – chama
Lo volví a ejecutar y la secuencia de error no está vacía. Cuando leí la secuencia de error, se imprimió "El sistema no puede encontrar la ruta especificada", lo cual no tiene sentido, pero al menos es algo. – chama