访问WinRT中的Windows下载文件夹

时间:2012-12-13 16:54:00

标签: windows-8 windows-runtime filesystems

根据this文章,我们只对“下载”文件夹具有写入权限 - 这似乎得到了我发现的支持。在WinRT中有什么方法吗?我希望能够遍历下载文件夹中的文件。

1 个答案:

答案 0 :(得分:5)

Here是关于这个主题的官方文件:

  

所有应用都可以在“下载”文件夹中创建文件和文件夹   访问他们创建的文件。但是应用无法访问中的文件   他们没有创建的下载文件夹。

     

当您的应用在“下载”文件夹中创建文件时,其他应用无法创建   干扰或访问您的文件,除非用户明确给出   其他应用访问。用户可以授予您另一个应用访问权限   通过从文件选择器中选择文件来获取文件。您的应用也可以使用   文件选择器可以访问Downloads文件夹中的文件   它没有创造。

所以,不,没有用户干预就无法枚举或遍历文件夹中的所有文件。但是,如果您让用户选择带有FolderPicker的文件夹:

,则可以
var picker = new FolderPicker();
picker.FileTypeFilter.Add("*");
var folder = await picker.PickSingleFolderAsync();
foreach (var file in await folder.GetFilesAsync())
{
    // do something with each file
}

获得对StorageFolder的引用后,您甚至可以将其存储在MostRecentlyUsedList中,以便将来可以访问它而无需用户再次选择它:

var token = StorageApplicationPermissions.MostRecentlyUsedList.Add(folder);

您只需存储返回的令牌即可再次访问它:

var folder = await StorageApplicationPermissions.MostRecentlyUsedList.GetFolderAsync(token);