2008-09-09 7 views
18

Für ein Projekt, an dem ich arbeite. Ich muss nach einer ausführbaren Datei im Dateisystem suchen. Für UNIX-Derivate nehme ich an, dass der Benutzer die Datei in der mächtigen $ PATH-Variablen hat, aber unter Windows gibt es keine solche Sache.Finden Sie alle Laufwerksbuchstaben in Java

Ich kann sicher annehmen, dass die Datei höchstens 2 Ebenen tief in das Dateisystem ist, aber ich weiß nicht, auf welchem ​​Laufwerk es sein wird. Ich muss alle Laufwerke versuchen, aber ich kann nicht herausfinden, wie alle verfügbaren Laufwerke aufgelistet werden (denen ein Buchstabe zugewiesen ist).

Irgendwelche Hilfe?

EDIT: Ich weiß, es gibt eine Variable% PATH%, aber es ist nicht so integriert wie in UNIX-Systemen. Zum Beispiel ist die Anwendung, die ich suche, OpenOffice. Eine solche Software wäre normalerweise nicht in% PATH% enthalten.

+0

http: // stackoverflow.com/questions/462110/acquiring-drive-names-as-gegen-Laufwerk-Buchstaben-in-Java könnte auch nützlich sein, war es für mich. –

Antwort

37

http://docs.oracle.com/javase/7/docs/api/java/io/File.html#listRoots()

File[] roots = File.listRoots(); 
for(int i = 0; i < roots.length ; i++) 
    System.out.println("Root["+i+"]:" + roots[i]); 

google: Liste treibt java, zuerst :-) Hit

+2

Danke. Ich denke, ich brauche Zeit, um meine Google-Kenntnisse zu verbessern, anstatt zu programmieren. – wvdschel

+0

Was ist "Google"? – Zon

+1

+7 Jahre später, das ist jetzt das Top-Ergebnis beim googlen [java windows list drives] (https://www.google.de/search?q=java+list+windows+drives) ツ – earcam

-1

Natürlich gibt es eine PATH Umgebungsvariable in Windows.

%PATH% Diese Variable enthält eine durch Semikolons getrennte Liste von Verzeichnissen, in denen der Befehlsinterpreter für ausführbare Dateien suchen. Entspricht der UNIX-Variablen $ PATH.

+0

Ich weiß, dass es eine Variable% PATH% gibt, aber sie ist nicht so integriert wie in UNIX-Systemen. Zum Beispiel ist die Anwendung, die ich suche, OpenOffice. Eine solche Software wäre normalerweise nicht in% PATH% enthalten. – wvdschel

0

Windows hat tatsächlich eine PATH-Umgebungsvariable. Es hat eine andere Syntax als Unix, weil es Semikolon (;) als Trennzeichen anstelle von Doppelpunkt (:) verwendet und Sie müssen nach Zeichenketten in Anführungszeichen sehen, die Leerzeichen enthalten könnten. Aber es ist da.

Wenn das Installationsprogramm dieses anderen Programms der PATH-Umgebungsvariablen ein eigenes Verzeichnis hinzufügt, können Sie sich darauf verlassen. Wie Sie jedoch erwähnen, müssen Windows-Installationsprogramme den Anwendungspfad normalerweise nicht dem Pfad hinzufügen, da sie stattdessen eine Verknüpfung im Startmenü oder etwas anderes installieren.

Für Laufwerksbuchstaben in Java wäre ein Versuch, sie alle zu testen, es werden nur maximal 24 (C bis Z) verwendet, die von Nutzen sind. Oder Sie könnten "net use" ausführen und die Ergebnisse parsen, obwohl das etwas unordentlicher ist.

2

Suchen "überall" kann sehr chaotisch sein.

Betrachten Sie ein CD-ROM-Laufwerk, und es dreht sich. Das kann sehr laut sein.

Sehen Sie sich ein Netzwerklaufwerk an, das möglicherweise sehr langsam ist. Möglicherweise ist der Server ausgefallen, und Sie müssen möglicherweise einige Minuten warten, bis das Zeitlimit überschritten wird.

Vielleicht (für Windows-Maschinen) sollten Sie nur im Start-Menü suchen. Wenn nichts auf OOo zeigt, ist es wahrscheinlich nicht installiert. Wenn dies der Fall ist, ist der Benutzer wahrscheinlich ein fortgeschrittener Benutzer, der keine Probleme haben wird, den Standort manuell anzugeben.

+4

Sie denken a CD ist laut? Ihr PC hat offensichtlich kein Diskettenlaufwerk mehr. _Diese_ sind laut, auch ohne Diskette. – MSalters

0

Verwenden Sie JNI. Dies ist perfekt für C++ - Code. Sie können nicht nur alle Laufwerke auflisten, sondern auch den entsprechenden Laufwerkstyp (Wechselmedium, lokale Festplatte oder CD-ROM, DVD-ROM usw.)

Verwandte Themen