我需要使用Java查找我的文档路径。下面的代码没有给出“准确”的位置
System.getProperty("user.home");
另一种方式应该是什么呢?
附言:我不想使用JFileChooser肮脏的把戏。
发布于 2012-03-13 10:49:23
您可以使用注册表查询来获取它,不需要JNA或管理员权限。
Runtime.getRuntime().exec("reg query \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell
Folders\" /v personal");
显然,这在Windows以外的任何系统上都会失败,我不确定这是否适用于Windows XP。
编辑:将其放入代码的工作序列中:
String myDocuments = null;
try {
Process p = Runtime.getRuntime().exec("reg query \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\" /v personal");
p.waitFor();
InputStream in = p.getInputStream();
byte[] b = new byte[in.available()];
in.read(b);
in.close();
myDocuments = new String(b);
myDocuments = myDocuments.split("\\s\\s+")[4];
} catch(Throwable t) {
t.printStackTrace();
}
System.out.println(myDocuments);
注意,这将锁定进程,直到"reg query“完成,这可能会导致问题,这取决于您正在做什么。
发布于 2012-09-18 23:13:15
这很简单,JFileChooser
会帮你找到它
new JFileChooser().getFileSystemView().getDefaultDirectory().toString();
我希望这能帮助到一些人
发布于 2013-10-31 02:53:46
使用JNA,您将执行以下操作:
String myDocsPath = Shell32Util.getFolderPath(ShlObj.CSIDL_PERSONAL);
JNA动态提取DLL,然后将JNI与此DLL一起使用来进行Windows API调用。但是它对你隐藏了所有的JNI细节。使用JNA和使用任何其他java库JAR一样简单。
https://stackoverflow.com/questions/9677692
复制相似问题