Ich versuche, die Ergebnisse eines Befehls cmd (Dir zum Beispiel) einzulesen. Nach dem Erstellen des Prozesses verwende ich eine BufferedReader
in Verbindung mit einer InputStreamReader
. Aus irgendeinem Grund bleibt die BufferedReader
leer, obwohl ich weiß, dass es einige Ausgaben zum Lesen geben muss. HierProblem mit der Ausgabe eines Befehls cmd in Java
ist der Code Ich verwende:
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();
}
ist process.getErrorStream() auch leer? –
ja - sowohl der ErrorStream als auch der InputStream haben 0 Bytes zur Verfügung – chama
Ich habe es gerade noch einmal ausgeführt, und der Fehler-Stream ist nicht leer. Als ich den Fehlerstrom las, druckte es "Das System kann den angegebenen Pfad nicht finden", was nicht gerade Sinn macht, aber zumindest ist es etwas. – chama