访问WinRT中的Windows下载文件夹

Pau*_*els 1 filesystems windows-8 windows-runtime

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

Dam*_*Arh 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
}
Run Code Online (Sandbox Code Playgroud)

获得参考后,StorageFolder您甚至可以存储它,MostRecentlyUsedList以便将来可以访问它,而无需用户再次选择它:

var token = StorageApplicationPermissions.MostRecentlyUsedList.Add(folder);
Run Code Online (Sandbox Code Playgroud)

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

var folder = await StorageApplicationPermissions.MostRecentlyUsedList.GetFolderAsync(token);
Run Code Online (Sandbox Code Playgroud)