Come trovare la cartella "I miei documenti" in Java


Sono disposto a salvare un file nella cartella "Documenti" dell'utente.

Ho provato a ottenere la posizione in questo modo:

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

Quindi, mi sono reso conto che questo non avrebbe funzionato in un sistema in cui la lingua è impostata su un'altra lingua, ad esempio il francese.

Esiste un altro modo per ottenere la cartella "Documenti" in modo efficiente?

Author: IvanRF, 2009-10-01

5 answers

Se non ti dispiace dipendere dallo Swing, puoi apparentemente usare questo trucco:

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());
  }
}

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

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

Per quanto riguarda le prestazioni, questo è più veloce rispetto all'utilizzo di JFileChooser:

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

Nel mio PC, l'approccio JFileChooser richiedeva 300 ms e chiamare FileSystemView direttamente richiedeva meno di 100 ms.

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

C'è estensione winfoldersjava JNI per accedere a nomi di cartelle speciali in Java.

La pagina winfoldersjava descrive anche un altro metodo che utilizza Swing:

Inoltre, se hai bisogno solo del percorso "I miei documenti" e non ti dispiace toccare Swing potresti non aver bisogno di WinFoldersJava. Puoi usare javax.swing.filechooser.Visualizzazione del sistema di file.getFileSystemView ().getDefaultDirectory() invece.

 5
Author: laalto, 2009-10-01 12:13:27
 0
Author: Wander Nauta, 2009-10-01 12:06:54

La posizione per quella directory può essere modificata da ciascun utente, quindi non dipende solo dalle impostazioni locali.
Per trovare dove si trova quella cartella, devi guardare nel registro di sistema. Il comando Windows per farlo è:

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

O

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

Non sono sicuro di quale posizione in realtà, ma è uno di loro.

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