2009-10-01 12 views
11

Ich bin bereit, eine Datei im Ordner "Eigene Dateien" des Benutzers zu speichern.So finden Sie den Ordner "Eigene Dateien" in Java

Ich versuchte, die Lage wie folgt erhalten:

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

Dann erkannte ich, das nicht in einem System funktionieren würde, wo die Sprache in eine andere Sprache, Französisch zum Beispiel festgelegt ist.

Gibt es eine andere Möglichkeit, den Ordner "Eigene Dateien" effizient zu erhalten?

Antwort

14

Wenn Sie nichts dagegen haben, Schaukel abhängig von Ihnen anscheinend diesen Trick verwenden:

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

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

+2

Für Mac OS X ist das Ergebnis der Verwendung eines Verzeichnisses tatsächlich zu hoch. – Trejkaz

+0

Dies verweist mich auf einen Ordner, der nicht existiert ... c: \ Users \ \ Dokumente. Der Dokumentenordner in meinem System heißt Meine Dokumente. – JavaLatte

+0

@JavaLatte Sind Sie sicher, dass das der tatsächliche Name ist? Explorer wird es als "Eigene Dateien" anzeigen, auch wenn das Verzeichnis "Dokumente" heißt, wenn Sie auf die Pfadleiste klicken, können Sie den echten Pfad sehen. –

0
+0

Funktioniert nicht für Java – abhilash

+1

Würde nicht "% CSIDL_PERSONAL% \ doc.txt" die Datei doc.txt im Ordner Eigene Dateien öffnen, auch in Java? –

+0

Es würde wahrscheinlich, aber Ihr Programm wäre nicht mehr plattformunabhängig. Es scheint besser, den Swing FileSystemView-Trick zu verwenden, wie er oben vorgeschlagen wurde, da dieser plattformübergreifend funktioniert und auch bedeutet, dass Sie die gleichen Vorgaben wie andere Java-Apps befolgen (immer schön, um konsistent zu sein). –

5

ist es winfoldersjava JNI extension für in Java spezielle Ordnernamen erreichbar.

Die winfoldersjava Seite beschreibt auch eine andere Methode Schaukel mit:

Auch, wenn Sie nur die „Eigene Dateien“ Pfad brauchen und nichts dagegen haben, berühren Schwingen Sie möglicherweise nicht WinFoldersJava brauchen. Sie können stattdessen javax.swing.filechooser.FileSystemView.getFileSystemView(). GetDefaultDirectory() verwenden.

0

Der Standort für dieses Verzeichnis kann von jedem Benutzer geändert werden, es hängt also nicht nur vom Gebietsschema ab.
Um herauszufinden, wo sich dieser Ordner befindet, müssen Sie in die Registrierung schauen. Die Windows-Befehl, dies zu tun ist entweder:

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

oder

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

nicht sicher ist, welche Lage tatsächlich, aber es ist einer von ihnen.

+0

Diese Registrierungseinträge werden erst nach einem anderen Programm namens Shell-APIs erstellt –

9

Performance In Bezug auf dies ist schneller als die Verwendung vonJFileChooser:

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

In meinem PC, JFileChooser Ansatz erforderlich 300ms, und ruft FileSystemView direkt benötigt weniger als 100 ms.

Verwandte Themen