Hey,
ich bin gerade dabei, mir ein Programm mit GUI zu schreiben, mit unter Anderem den Inhalt meiner externen Festplatte auslesen möchte. Momentan habe ich nur einen Button und arbeite an der Funktion, den DIR Befehl von Windows von meinem Programm aus auszuführen. Bis jetzt sind zwei Fehler aufgetreten:
Fehler 1: Bevor ich BufferedReader zum Abfangen des Input Streams und der Errors benutzt habe, bekam ich folgenden Fehler:
. Leider weiß ich nicht, wie ich diesen Fehler beheben kann. Ich habe die cmd.exe so eingestellt, dass sie immer mit Administratorrechten ausgeführt wird, aber der Fehler tritt weiterhin auf.
Fehler 2: Nun habe ich einen BufferedReader für den Input Stream und einen für die Errors eingebaut und lasse das ganze unter Anderem mit System.out.println ausgeben. Die Ausgabe sieht nun so aus:
. Außerdem hängt sich die virtuelle Maschine von BlueJ auf, der Button der GUI bleibt dann so komisch eingedrückt und mehr passiert nicht.
Ich hoffe, mir kann jemand helfen, denn leider weiß ich nicht, wie ich das Problem beheben kann, bzw. wie ich mein Programm sonst ans Laufen bekommen kann. Hier mal meine actionPerformed-Methode:
Gruß,
Jats
ich bin gerade dabei, mir ein Programm mit GUI zu schreiben, mit unter Anderem den Inhalt meiner externen Festplatte auslesen möchte. Momentan habe ich nur einen Button und arbeite an der Funktion, den DIR Befehl von Windows von meinem Programm aus auszuführen. Bis jetzt sind zwei Fehler aufgetreten:
Fehler 1: Bevor ich BufferedReader zum Abfangen des Input Streams und der Errors benutzt habe, bekam ich folgenden Fehler:
Code:
java.io.IOException: Cannot run program "C:": CreateProcess error=5, Zugriff verweigert
Fehler 2: Nun habe ich einen BufferedReader für den Input Stream und einen für die Errors eingebaut und lasse das ganze unter Anderem mit System.out.println ausgeben. Die Ausgabe sieht nun so aus:
Code:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.
Ich hoffe, mir kann jemand helfen, denn leider weiß ich nicht, wie ich das Problem beheben kann, bzw. wie ich mein Programm sonst ans Laufen bekommen kann. Hier mal meine actionPerformed-Methode:
Java:
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
String dirPfad = tDirPfad.getText();
String laufwerk = dirPfad.substring(0,2);
try {
if(o==bDir) {
DirBefehle = new String [] {"cmd" , "set APPDATA=%CD%" , laufwerk , " dir"};
for(int i = 0; i<DirBefehle.length; i++) {
System.out.println(DirBefehle [i]); //Zum Testen erst Mal nur Befehl ausgeben
Process p = Runtime.getRuntime().exec(DirBefehle [i]);
inReader = new BufferedReader(new InputStreamReader(p.getInputStream()));
errorReader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String s, ausgabe = null;
System.out.println("DIR: \n");
while((s=inReader.readLine())!=null) {
ausgabe += s;
taAusgabe.setText(ausgabe);
System.out.println(s);
}
System.out.println("Errors: \n");
while ((s = errorReader.readLine()) != null) {
System.out.println(s);
}
}
}
}
catch (Exception err) {
err.printStackTrace();
}
}
Gruß,
Jats