Programm mit CMD Befehl hängt sich auf oder gibt error = 5 aus

Jats

Aktives Mitglied
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:
Code:
java.io.IOException: Cannot run program "C:": CreateProcess error=5, Zugriff verweigert
. 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:
Code:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.
. 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:

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
 

Das habe ich mir auch gedacht. An sich wäre da vielleicht etwas brauchbares dabei, allerdings möchte ich mit dem DIR Befehl eine Liste aller Ordner in einem bestimmten Verzeichnis bekommen und da war bei den Methoden so weit ich das in Erinnerung habe nichts dabei. Später will ich auch Größe und sowas auslesen, da wäre das vielleicht ganz hilfreich, aber für das aktuelle Problem glaube ich nicht, dass diese Klasse hilft.

EDIT: Könnte die Methode list da vielleicht helfen ?
 
Zuletzt bearbeitet:

Zurück
Oben