我在WinRT工作,我有点卡住了:
我正在编写一个具有媒体库功能的音乐播放器。我在SQLite数据库中保存有关音乐的信息(例如艺术家等)。我想让用户将他的音乐保存在他想要的任何地方,而不是windows方式,它必须在“音乐”库中。
用户可以使用文件夹选择器在文件夹中添加音乐。我遇到的问题是:如何在以后访问这些文件,例如在应用程序重新启动后?
保持路径不起作用,因为我总是得到“拒绝访问”错误。我唯一可以访问文件的方法是使用浏览文件夹时获得的StorageFile对象。
我该如何解决这个问题?
与已经给出的注释一样,Windows.Storage.AccessCache(http://msdn.microsoft.com/en-us/library/windows/apps/br230566.aspx)是您需要使用的API。但是,不是保存对每个StorageFile的访问权限,而是使用文件夹选择器并保存StorageFolder对象的权限(API适用于两者)。您不太可能达到文件夹的1000项限制。
Windows运行时应用程序是沙箱。如果要访问任意文件夹位置,则必须使用文件选择器。
将来访问文件
string key = Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(storageFile);
//save this key for access file later
//Access file from saved key
StorageFile file = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(key);
如果你有太多的文件,你可以添加文件的StorageFolder
string key = Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(storageFolder);
StorageFolder folder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(key);
然后从父StorageFolder获取StorageFiles
StorageFile childFile = await folder.GetFileAsync("filename");