java - 我如何获得用户音乐目录?

标签 java windows windows-10

可以更改用户音乐、图片等目录。为此,请转到您的 Windows 资源管理器,右键单击“音乐”并转到路径。

German Screenshot

在这里你可以看到,我将我的音乐移动到了另一个硬盘上。

现在的问题是:如何在 Java 中获取此目录?

因为 System.getProperty("user.home").concat("\\Music") 导致“C:\Users\GG\Music”而不是“D:\GG\音乐"。

更新:

Anders 回答:

对我有用的方法是以下 3 行代码:

char[] pszPath = new char[WinDef.MAX_PATH];
Shell32.INSTANCE.SHGetFolderPath(null, ShlObj.CSIDL_MYMUSIC, null, ShlObj.SHGFP_TYPE_CURRENT, pszPath);
File f = new File(String.valueOf(pszPath).trim());

最佳答案

在 Windows 上获取特殊文件夹路径的正确方法是调用 shell 函数,如 SHGetFolderPath使用 CSIDL_* 常量(在您的情况下为 CSIDL_MYMUSIC)。

您需要使用 Java 中的 JNI 或 JNA 来执行此操作。可以找到示例herehere .

为了完整起见,从注册表中读取的是 not the correct way做这个...

关于java - 我如何获得用户音乐目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44136342/

相关文章:

java - 当我正确查看未定义的方法(构造函数)时,出现有关未定义方法(构造函数)的错误? ( java )

windows - 如何在 Exiftool 中更改媒体创建日期?

c++ - 如何在 C++ 中使用 Windows DLL(后期绑定(bind))方法?

成功安装后在 Windows 10 Ubuntu 上运行的 Python3 中找不到 Python elasticsearch_dsl 模块

java - 设置 Path 环境变量行为在 Windows 10 上有所不同

java - 如何将斯坦福解析器软件集成到我的 java 程序中?

java - 当我组合构造函数注入(inject)(子类)和属性注入(inject)(父类)时,@InjectMocks 给我 null

java - 如何解决fabric-sdk-java中的 “instantiate chaincode”错误?

Windows 7 - 从开发人员的角度来看会有什么期望?

windows-10 - Windows Phone 8.1 silverlight 应用程序可以在 Windows 10 Phone 上运行吗?