我试图在用C#编写的Windows Universal App中获取默认音乐库文件夹路径。但是,KnownFolders.MusicLibrary.Path
返回空字符串,而(await KnownFolders.MusicLibrary.GetFoldersAsync())
似乎返回空列表。我已经在Package.appxmanifest
中指定了此功能:
<Package ...>
...
<Capabilities>
<uap:Capability Name="musicLibrary" />
</Capabilities>
</Package>
我怎么做错了?我希望这行代码会返回C:\Users\username\Music
。
答案 0 :(得分:6)
在KnownFolders.MusicLibrary property的备注中,我们可以找到
图书馆允许用户在一个位置查看相关内容。库是一个虚拟文件夹。库中的文件夹保留在其原始位置。在Windows Libraries中了解有关库的更多信息。
StorageFolder.Path property可以获取文件系统中当前文件夹的完整路径,但前提是路径可用。由于音乐库是虚拟文件夹,因此文件系统路径不可用。所以它总是返回空字符串。
音乐库通常有以下路径。
%USERPROFILE%\Music
这是音乐库中包含的已知文件夹的路径。
库是文件夹的虚拟集合,默认情况下包括已知文件夹以及用户使用您的应用程序或其中一个内置应用程序添加到库中的任何其他文件夹。例如,图片库默认包含图片已知文件夹。用户可以使用您的应用程序或内置照片应用程序向图库中添加文件夹或将其删除。
要获得此路径,我们可以使用 StorageLibrary class 。此类允许我们在音乐或视频等库中添加和删除文件夹,并让我们获取库中包含的文件夹列表。
已知文件夹是库中默认保存新文件的文件夹。我们可以使用StorageLibrary.SaveFolder property获取此文件夹,然后获取如下路径:
var musicLibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Music);
Debug.WriteLine(musicLibrary.SaveFolder.Path);
有关详细信息,请参阅Files and folders in the Music, Pictures, and Videos libraries。