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

时间:2009-10-01 12:03:20

标签: java windows

我愿意在用户的“我的文档”文件夹中保存文件。

我尝试获取这样的位置:

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

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

是否有其他方法可以有效地获取“我的文档”文件夹?

5 个答案:

答案 0 :(得分: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());
  }
}

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

答案 1 :(得分:13)

关于效果,比使用JFileChooser更快

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

在我的电脑中,JFileChooser方法需要300毫秒,调用FileSystemView直接需要不到100毫秒。

答案 2 :(得分:5)

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

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

  

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

答案 3 :(得分:0)

每个用户都可以更改该目录的位置,因此它不仅仅依赖于语言环境 要查找该文件夹的位置,您必须查看注册表。 执行此操作的Windows命令是:

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

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

实际上不确定哪个位置,但它是其中之一。

答案 4 :(得分:-1)

相关问题