用途:为 .NET MAUI 应用中的文件选择、文件系统访问、打包资源读取和应用数据存储提供指导,覆盖 FilePicker API、FileResult 处理及 FileSystem 助手。
主要能力与要点:
- 读取选中文件时必须使用 await result.OpenReadAsync(),不要直接读 FullPath,因 Android 等平台会返回 content URI,直接读取会抛错或返回空数据。
- FilePicker 取消时返回 null,访问属性前必须判空。
- 自定义 FilePickerFileType 各平台格式不同:Android 用 MIME 类型(如 "application/json"),iOS/macOS 用 UTType 标识符(如 "public.json"),Windows 用带点扩展名(如 ".json")。
- 打包在 Resources/Raw 的资源为只读,需先复制到 FileSystem.Current.AppDataDirectory 再修改;部分平台会扁平化子目录,应使用唯一文件名。
- iOS 沙箱路径含会随干净构建变化的 GUID,不能硬编码绝对路径,应使用 FileSystem 助手。
- Android 上 OpenAppPackageFileAsync 返回的流可能不支持 Length,需要先复制到 MemoryStream 再取长度。
- Windows 打包应用的文件系统被虚拟化,应使用 AppDataDirectory 和 CacheDirectory。
权限与限制:
- Android 权限按版本区分:≤12(API 32)使用 READ_EXTERNAL_STORAGE;≥13(API 33)使用 READ_MEDIA_IMAGES、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO,旧权限在新版上无效。
- macOS 需在 App Sandbox 权益中声明文件访问。
- 该资料为技能指南文档,除上述内容外,安装方式、收费与价格等信息暂未提供。