cmd-Befehl Ausgabe einlesen

Wyatt

Erfahrenes Mitglied
Hallo!

Ich schreibe für die Schule gerade ein Programm, welches auch zu 95% fertig ist, jedoch funktioniert das Einlesen der Ausgabe eines Befehls nicht.

Der Befehl lautet "arp -d" ... er bewirkt, dass die ARP-Tabelle geleert wird, bei einer erfolgreichen ausführung gibt es keine Ausgabe, bei einem Fehler natürlich eine Fehlermeldung.
Leider liest er absolut nichts ein, egal ob Fehlermeldung oder "Erfolgreiche-Nichts-Ausgabe"!
Ich habe es auch schon mit einem Scanner statt BufferedReader versucht, klappt auch nicht :(

Die Methode schaut so aus:
public void delarpActionPerformed(ActionEvent evt) {
try {
String s;
String[] cmd = {"cmd.exe","/c","arp -d"};
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));

ausgabe.setText(""); // Ausgabe ist eine JTextArea

while((s = in.readLine()) != null)
{
if((s = in.readLine()) == null)
{
ausgabe.setText("Alle ARP-Einträge gelöscht.");
ausgabe.append(s);
}
else
{
ausgabe.append(s);
ausgabe.append("\n");
}
}
}
}
catch(Exception ex) {
ex.printStackTrace();
ausgabe.setText("Error");
}
}

Für jegliche Hilfe bin ich sehr dankbar!

Gruss
 
Hallo,

ich hab zwar noch nichts dergleichen gemacht, aber müßte nicht, wenn eine Fehlermeldung auftritt, diese in irgendeinerweise in dem Process gespeichert werden? Also bei Dir in dem Falle p?

Gruß KlaDi.
[EDIT]Eclipse schlägt zum Beispiel als Funktion p.getErrorStream(); p.getInputStream(); vor. Vielleicht hilft Dir das ja weiter.
 
Zuletzt bearbeitet:
Hallo!

Wunderbar, es funktioniert... er liest nun auch die Fehlermeldungen ein!
Meine Note ist gerettet, hehe *g*

p.getErrorStream() war die Lösung des Problems, dadurch konnte auch die Ausgabe eingelesen werden und in die JTextArea geschrieben werden!

Vielen Dank für die schnelle Hilfe!
Gruß
 
Zurück