如何在Java中找到"我的文档"文件夹

Att*_*lah 11 java windows

我愿意在用户的"我的文档"文件夹中保存文件.

我试过这样的位置:

System.getenv("USERPROFILE") + "\\My Documents\\"
Run Code Online (Sandbox Code Playgroud)

然后,我意识到这不适用于将语言设置为另一种语言的系统,例如法语.

是否有另一种方法可以有效地获取"我的文档"文件夹?

Sim*_*olt 15

如果你不介意依赖Swing你可以显然使用这个技巧:

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());
  }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 对于Mac OS X,使用它的结果实际上是一个目录太高了. (2认同)

Iva*_*nRF 14

关于性能,比使用更快JFileChooser:

FileSystemView.getFileSystemView().getDefaultDirectory().getPath()
Run Code Online (Sandbox Code Playgroud)

在我的电脑中,JFileChooser方法需要300毫秒,FileSystemView直接呼叫需要不到100毫秒.


laa*_*lto 5

有用于访问Java中特殊文件夹名称的winfoldersjava JNI扩展.

winfoldersjava页面还描述了使用Swing的另一种方法:

此外,如果您只需要"我的文档"路径并且不介意触摸Swing,则可能不需要WinFoldersJava.您可以使用javax.swing.filechooser.FileSystemView.getFileSystemView().getDefaultDirectory()代替.