我愿意在用户的“我的文档”文件夹中保存文件。
我尝试获取这样的位置:
System.getenv("USERPROFILE") + "\\My Documents\\"
然后,我意识到这不适用于将语言设置为另一种语言的系统,例如法语。
是否有其他方法可以有效地获取“我的文档”文件夹?
答案 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());
}
}
答案 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)