2010-12-06 9 views
10

Ich mache einen einfachen Dateibrowser und möchte wissen, wie man das Standardstammverzeichnis erhält. Ich weiß, dass java.io.File.listRoots() gibt alle Wurzeln (für mich ist es A:\, C:\, D:\, E:\, F:\, G:\, H:\, I:\, L:\ T:\, U:\, X:\, Y:\, Z:\), aber ich möchte den einen der Benutzer in erster Linie verwendet (das heißt die mit dem Betriebssystem drauf), damit ich weiß, von wo aus das Browsen zu starten.Abrufen des Standardstammverzeichnisses in Java

Antwort

2

Erste die Betriebssystem-Partition root ist nur eine Sache auf Windows da auf Unix es ist immer /.

daher der folgende Code funktioniert für Windows nur:

System.getenv("SystemDrive"); 

Es wird die SystemDrive Umgebungsvariable Wert. Dies sollte immer die Root-Partition des Betriebssystems, z. C:.

15

nicht sicher, ob dies eine Hilfe ist, aber man könnte versuchen:

import javax.swing.filechooser.*; 

FileSystemView.getFileSystemView().getRoots()[0]; 

oder

FileSystemView.getFileSystemView().getHomeDirectory(); 

oder

System.getProperty("user.dir"); 

Für den letzten Schnipsel, könnten Sie das bekommen root-Verzeichnis, indem Sie mit getParent() nach oben navigieren, bis null zurückgegeben wird.

+0

Links beide gebrochen – IanGilham

+0

@IanGilham Ich denke, Sie wollten eine andere Antwort zu kommentieren – Supuhstar

+1

Ja, mein schlechtes. Du scheinst den gefunden zu haben, den ich meinte. – IanGilham

0
public static String rootDirectory(){ 
     return File.listRoots()[0].getAbsolutePath(); 
} 
+7

ist dies garantiert nicht, sagen wir, das 'A'-Laufwerk in Windows, wenn ich ein Diskettenlaufwerk angeschlossen habe? – Supuhstar

+1

@Supuhstar, ich habe gerade einen Test durchgeführt, und die Antwort lautet nein. Unter Windows gibt es die Liste der Wurzeln in alphabetischer Reihenfolge zurück, also "A: \" ist zuerst. Zusätzlich wird gemäß der Dokumentation (https://docs.oracle.com/javase/7/docs/api/java/io/File.html#listRoots()): „Eine bestimmte Java-Plattform kann null oder mehr Stütz hierarchisch organisierte Dateisysteme. " Mit anderen Worten, Blind-Dereferenzierung von Index 0 kann eine ArrayIndexOutOfBoundsException verursachen. Diese Antwort ist somit nicht vollständig plattformübergreifend und nicht zuverlässig. –