首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用Java获取我的文档路径

用Java获取我的文档路径
EN

Stack Overflow用户
提问于 2012-03-13 10:40:37
回答 6查看 36.1K关注 0票数 29

我需要使用Java查找我的文档路径。下面的代码没有给出“准确”的位置

System.getProperty("user.home");

另一种方式应该是什么呢?

附言:我不想使用JFileChooser肮脏的把戏。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-03-13 10:49:23

您可以使用注册表查询来获取它,不需要JNA或管理员权限。

代码语言:javascript
复制
Runtime.getRuntime().exec("reg query \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell 
Folders\" /v personal");

显然,这在Windows以外的任何系统上都会失败,我不确定这是否适用于Windows XP。

编辑:将其放入代码的工作序列中:

代码语言:javascript
复制
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“完成,这可能会导致问题,这取决于您正在做什么。

票数 12
EN

Stack Overflow用户

发布于 2012-09-18 23:13:15

这很简单,JFileChooser会帮你找到它

代码语言:javascript
复制
new JFileChooser().getFileSystemView().getDefaultDirectory().toString();

我希望这能帮助到一些人

票数 44
EN

Stack Overflow用户

发布于 2013-10-31 02:53:46

使用JNA,您将执行以下操作:

代码语言:javascript
复制
String myDocsPath = Shell32Util.getFolderPath(ShlObj.CSIDL_PERSONAL);

JNA动态提取DLL,然后将JNI与此DLL一起使用来进行Windows API调用。但是它对你隐藏了所有的JNI细节。使用JNA和使用任何其他java库JAR一样简单。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9677692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档