Obtenir mon chemin de documents en Java


J'ai besoin de trouver mon chemin de documents en utilisant Java. Le code suivant ne me donne pas de loation "précise"

System.getProperty("user.home");

Que devrait être l'inverse?

PS: Je ne veux pas utiliser le truc sale de JFileChooser.

Author: Em Ae, 2012-03-13

7 answers

Vous pouvez l'obtenir en utilisant une requête de registre, pas besoin de droits JNA ou admin pour cela.

Runtime.getRuntime().exec("reg query \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell 
Folders\" /v personal");

Évidemment, cela échouera sur autre chose que Windows, et je ne suis pas certain que cela fonctionne pour Windows XP.

MODIFIER: Mettez ceci dans une séquence de travail de code:

String myDocuments = null;

try {
    Process p =  Runtime.getRuntime().exec("reg query \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\" /v personal");
    p.waitFor();

    InputStream in = p.getInputStream();
    byte[] b = new byte[in.available()];
    in.read(b);
    in.close();

    myDocuments = new String(b);
    myDocuments = myDocuments.split("\\s\\s+")[4];

} catch(Throwable t) {
    t.printStackTrace();
}

System.out.println(myDocuments);

Notez que cela verrouillera le processus jusqu'à ce que "reg query" soit terminé, ce qui pourrait causer des problèmes en fonction de ce que vous faites.

 9
Author: pdinklag, 2012-03-13 03:00:01

C'est facile, JFileChooser le trouve pour vous

new JFileChooser().getFileSystemView().getDefaultDirectory().toString();

J'espère que cela aide quelqu'un

 25
Author: xchiltonx, 2018-04-05 16:01:09

Puisque la réponse la plus upvotée de @xchiltonx utilise JFileChooser je voudrais ajouter que, en ce qui concerne les performances, c'est plus rapide {[7] } que d'utiliser JFileChooser:

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

Dans mon PC, JFileChooser aproach avait besoin de 300 ms, et appeler FileSystemView nécessitait directement moins de 100 ms.

Remarque: La question est un duplicata possible de Comment trouver le dossier" Mes documents " en Java

 15
Author: IvanRF, 2017-05-23 12:26:12

En utilisant JNA, vous feriez ceci:

String myDocsPath = Shell32Util.getFolderPath(ShlObj.CSIDL_PERSONAL);

JNA extrait une DLL à la volée, puis utilise JNI avec cette DLL pour effectuer des appels d'API Windows. Il vous cache cependant tous les détails JNI. Utiliser JNA est aussi facile que d'utiliser n'importe quel autre JAR de bibliothèque java.

 2
Author: Sarel Botha, 2013-10-30 18:53:46

"user.home" renvoie le répertoire personnel de l'utilisateur, pas le dossier "Mes documents". Sur Windows, ce serait "C:\Users\Username\" pour Vista ou 7, ou "C:\Documents et Paramètres \ Nom d'utilisateur" pour XP

Ce que vous voulez, c'est:

System.out.println(System.getProperty("user.home") + File.separatorChar + "My Documents");
 1
Author: nbarraille, 2012-03-13 02:46:21

C'est ce que fait eclipse pour obtenir le dossier de document utilisateur

System.getProperty("user.dir") //$NON-NLS-1$
                    + File.separator + "workspace")

J'espère que c'est utile!

 0
Author: TuanAnh207, 2013-09-14 04:16:38
JFileChooser fileChooser = new JFileChooser();

fileChooser.setCurrentDirectory(new File(System.getProperty("user") + (File.separatorChar + "My Documents")));

int result = fileChooser.showOpenDialog(this);

if (result == JFileChooser.APPROVE_OPTION) {
    File selectedFile = fileChooser.getSelectedFile();
    System.out.println("Selected file: " + selectedFile.getAbsolutePath());
 -3
Author: Jose Balicag, 2017-10-26 17:01:05