You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP平台如何通过FolderRelativeId获取并打开对应文件?

UWP 存储权限与文件访问问题解答

1. 借助 StorageApplicationPermissions.FutureAccessList 打开已授权文件

StorageApplicationPermissions.FutureAccessList 是UWP提供的持久化文件/文件夹访问权限的工具,使用流程如下:

  • 首次通过文件选择器拿到目标 StorageFile 实例时,将其加入权限列表,保存返回的访问令牌:
// file 为 FileOpenPicker 选中的 StorageFile 对象
string accessToken = StorageApplicationPermissions.FutureAccessList.Add(file, "可选自定义备注");
// 需将 accessToken 持久化存储到本地配置、数据库等位置,后续启动应用可读取
  • 后续需要打开文件时,直接使用存储的令牌获取文件实例,无需再次唤起选择器:
StorageFile targetFile = await StorageApplicationPermissions.FutureAccessList.GetFileAsync(accessToken);
// 拿到 targetFile 后即可正常调用 OpenAsync、ReadTextAsync 等方法读写文件

注意:FutureAccessList 最多支持存储1000个授权条目,超出上限后新增条目会自动移除最早添加的旧条目

2. FolderRelativeId 的用法与打开文件的可行性

FolderRelativeId 是存储项(文件/文件夹)相对于其所属父级 StorageFolder 的唯一标识符,你看到的6250CF578FDF6C5/Song.mp3格式是它的标准输出。

核心规则

不能直接使用单独的 FolderRelativeId 字符串打开文件,它必须配合已授权的父级文件夹使用,本质是父文件夹下的相对定位标识,脱离父文件夹权限后没有实际作用。

适用场景

适合批量管理同一个授权文件夹下的多个子文件:仅需要给父级文件夹申请1个FutureAccessList授权令牌,所有子文件只需存储各自的FolderRelativeId即可,不需要为每个子文件单独申请权限,大幅节省FutureAccessList的1000条配额。

使用流程

  1. 首次通过 FolderPicker 选中目标父文件夹,将其加入FutureAccessList,保存返回的父文件夹访问令牌
  2. 记录该文件夹下需要访问的子文件的FolderRelativeId:
string relativeId = targetSongFile.FolderRelativeId;
  1. 后续打开子文件时,先通过父文件夹令牌获取已授权的父文件夹实例:
StorageFolder parentFolder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(parentFolderAccessToken);
  1. 用FolderRelativeId在父文件夹下定位到目标文件:
StorageFile targetSong = await parentFolder.GetItemAsync(relativeId) as StorageFile;

内容的提问来源于stack exchange,提问作者wonyh_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 04:06:04