Sto cercando di leggere i risultati di un comando cmd (dir per esempio). Dopo aver creato il processo, utilizzo uno BufferedReader
insieme a uno InputStreamReader
. Per qualche motivo, lo BufferedReader
continua a venire vuoto, anche se so che ci deve essere un output da leggere.Problema con l'output di un comando cmd in java
Ecco il codice che sto utilizzando:
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();
}
process.getErrorStream() restituisce anche vuoto? –
sì - sia ErrorStream che InputStream hanno 0 byte disponibili – chama
Ho appena eseguito di nuovo e il flusso di errori non è vuoto. Quando ho letto il flusso di errori, è stato stampato "Il sistema non riesce a trovare il percorso specificato", il che non ha esattamente senso, ma almeno è qualcosa. – chama