如何保存StorageFile以便以后使用?

时间:2012-11-22 18:59:06

标签: permissions windows-8 windows-runtime storage

我在WinRT工作,我有点陷入困境:

我正在编写一个具有媒体库功能的音乐播放器。我在SQLite数据库中保存有关音乐的信息(例如艺术家等)。我想让用户将他的音乐保存在他想要的任何地方,而不是windows方式,这一切都必须在“音乐”库中。

用户可以使用文件夹选择器在文件夹中添加音乐。我遇到的问题是:如何在以后访问这些文件,例如在应用程序重新启动后?

保持路径不起作用,因为我总是得到“拒绝访问”错误。我唯一可以访问文件的方法是使用浏览文件夹时获得的StorageFile对象。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

在已经给出的评论中,Windows.Storage.AccessCache(http://msdn.microsoft.com/en-us/library/windows/apps/br230566.aspx)是您需要使用的API 。但是,不是保存对每个StorageFile的访问权限,而是使用文件夹选择器并保存StorageFolder对象的权限(API适用于两者)。您不太可能达到文件夹的1000项限制。

答案 1 :(得分:0)

Windows运行时应用程序是沙箱。如果要访问任意文件夹位置, 可以使用文件选择器。

答案 2 :(得分:0)

将来访问文件

        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");