Je crée un navigateur de fichiers de base et je veux savoir comment obtenir le répertoire racine par défaut. Je sais que java.io.File.listRoots()
donne toutes les racines (pour moi c'est A:\, C:\, D:\, E:\, F:\, G:\, H:\, I:\, L:\ T:\, U:\, X:\, Y:\, Z:\
), mais je veux celui que l'utilisateur utilise principalement (c'est-à-dire celui avec le système d'exploitation dessus) donc je sais d'où commencer la navigation.Obtenir le répertoire racine par défaut en Java
Répondre
Obtenir le système d'exploitation partition racine est seulement une chose sur Windows
depuis le Unix
il est toujours /
.
Par conséquent, le code suivant fonctionne pour Windows
seulement:
System.getenv("SystemDrive");
Il obtient la valeur variable d'environnement SystemDrive
. Cela devrait toujours retourner la partition racine du système d'exploitation, par ex. C:
.
Je ne sais pas si cela est de toute aide, mais vous pouvez essayer:
import javax.swing.filechooser.*;
FileSystemView.getFileSystemView().getRoots()[0];
ou
FileSystemView.getFileSystemView().getHomeDirectory();
ou
System.getProperty("user.dir");
Pour le dernier extrait, vous pouvez obtenir le répertoire racine en naviguant vers le haut en utilisant getParent() jusqu'à ce que null
soit renvoyé.
public static String rootDirectory(){
return File.listRoots()[0].getAbsolutePath();
}
est-ce garanti de ne pas être, disons, le lecteur 'A' dans Windows si j'ai un lecteur de disquette joint? – Supuhstar
@Supuhstar, je viens de passer un test, et la réponse est non. Sous Windows, il renvoie la liste des racines par ordre alphabétique, donc "A: \" est le premier. De plus, selon les docs (https://docs.oracle.com/javase/7/docs/api/java/io/File.html#listRoots()): "Une plate-forme Java particulière peut supporter zéro ou plus. systèmes de fichiers hiérarchiquement organisés. " En d'autres termes, un déréférencement aveugle de l'index 0 peut provoquer une exception ArrayIndexOutOfBoundsException. Cette réponse n'est donc pas complètement plate-forme et non fiable. –
Liens à la fois cassé – IanGilham
@IanGilham Je pense que vous vouliez commenter une autre réponse – Supuhstar
Oui, mon mauvais. Vous semblez avoir trouvé celui que je voulais dire. – IanGilham