我愿意将文件保存在用户的“我的文档”文件夹中。
我试图得到这样的位置:
System.getenv("USERPROFILE") + "\\My Documents\\"
然后,我意识到这不适用于语言设置为其他语言的系统,例如法语。
是否有另一种方法有效地获取“我的文档”文件夹?
如果你不介意依靠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 )
关于性能, 这比使用JFileChooser
更快 :
FileSystemView.getFileSystemView().getDefaultDirectory().getPath()
在我的PC中, JFileChooser
方法需要300ms,调用FileSystemView
直接需要不到100ms。
有用于访问Java中的特殊文件夹名称的winfoldersjava JNI扩展 。
winfoldersjava页面还介绍了使用Swing的另一种方法:
此外,如果您只需要“我的文档”路径,不介意触摸Swing,则可能不需要WinFoldersJava。 您可以使用javax.swing.filechooser.FileSystemView.getFileSystemView()。getDefaultDirectory()来代替。
该目录的位置可以由每个用户改变,所以它不仅仅依赖于语言环境。
要找到该文件夹的位置,您必须查看注册表。 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
不确定实际上哪个位置,但它是其中之一。