Comment trouver le dossier" Mes Documents " en Java


Je suis prêt à enregistrer un fichier dans le dossier "Mes documents" de l'utilisateur.

J'ai essayé d'obtenir l'emplacement comme ceci :

System.getenv("USERPROFILE") + "\\My Documents\\"

Ensuite, j'ai réalisé que cela ne fonctionnerait pas dans un système où la langue est définie sur une autre langue, le français par exemple.

Existe - t-il un autre moyen d'obtenir efficacement le dossier "Mes documents"?

Author: IvanRF, 2009-10-01

5 answers

Si cela ne vous dérange pas de dépendre du Swing, vous pouvez apparemment utiliser cette astuce:

import javax.swing.JFileChooser;
javax.swing.filechooser.FileSystemView;

public class GetMyDocuments {
  public static void main(String args[]) {
     JFileChooser fr = new JFileChooser();
     FileSystemView fw = fr.getFileSystemView();
     System.out.println(fw.getDefaultDirectory());
  }
}

(source: http://www.rgagnon.com/javadetails/java-0572.html)

 14
Author: Simon Groenewolt, 2009-10-01 12:15:47

En ce qui concerne les performances, c'est plus rapide que d'utiliser JFileChooser:

FileSystemView.getFileSystemView().getDefaultDirectory().getPath()

Dans mon PC, l'approche JFileChooser nécessitait 300 ms, et l'appel FileSystemView nécessitait directement moins de 100 ms.

 11
Author: IvanRF, 2017-04-07 14:01:17

Il y a winfoldersjava JNI extension pour accéder aux noms de dossiers spéciaux en Java.

La page winfoldersjava décrit également une autre méthode utilisant Swing:

De plus, si vous n'avez besoin que du chemin "Mes documents" et que cela ne vous dérange pas de toucher Swing, vous n'aurez peut-être pas besoin de WinFoldersJava. Vous pouvez utiliser javax.swing.filechooser.FileSystemView.getFileSystemView().getDefaultDirectory () à la place.

 5
Author: laalto, 2009-10-01 12:13:27

L'emplacement de ce répertoire peut être modifié par chaque utilisateur, il ne dépend donc pas seulement des paramètres régionaux.
Pour trouver où se trouve ce dossier, vous devez regarder dans le registre. La commande Windows pour le faire est soit:

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User
Shell Folders" /v personal

Ou

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell 
Folders" /v personal

Je ne sais pas quel endroit en fait, mais c'est l'un d'entre eux.

 0
Author: JRL, 2009-10-01 12:17:50