1

根据这篇文章,我们只有对下载文件夹的写入权限——这似乎得到了我发现的支持。在 WinRT 中有没有办法解决这个问题?我希望能够遍历下载文件夹中的文件。

4

1 回答 1

5

是有关该主题的官方文档:

所有应用程序都可以在“下载”文件夹中创建文件和文件夹,并且可以访问它们创建的文件。但应用无法访问“下载”文件夹中不是他们创建的文件。

当您的应用在“下载”文件夹中创建文件时,其他应用无法干扰或访问您的文件,除非用户明确授予其他应用访问权限。用户可以通过从文件选择器中选择文件来授予另一个应用程序访问您的文件的权限。您的应用还可以使用文件选择器来访问“下载”文件夹中不是它创建的文件。

所以,不:没有用户干预,没有办法枚举或迭代文件夹中的所有文件。但是,如果您让用户选择带有以下内容的文件夹,您可以这样做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);
于 2012-12-15T06:13:26.893 回答