MAUI数据持久化核心是选对路径:1.AppDataDirectory存关键数据,跨平台自动映射且安全;2.CacheDirectory存可丢弃缓存,系统可能清理;3.外部共享文件必须用FilePicker.SaveAsync/PickAsync合规操作。

MAUI 做数据持久化,核心是选对路径 + 用对方式。不依赖第三方库也能安全、跨平台地存配置、缓存或用户文件,关键在于理解三种基础路径的用途和边界。
优先用 AppDataDirectory 存关键数据
这是最常用也最稳妥的选择,适合保存用户设置、登录态、结构化数据(如 JSON)、本地数据库文件等需要长期保留的内容。
- 路径由 FileSystem.AppDataDirectory 统一提供,各平台自动映射:Android 在
/data/data/{包名}/files,iOS 在沙盒Documents目录,Windows 在LocalAppData对应子目录 - 无需申请额外权限,系统自动隔离,其他应用无法访问
- 写入示例:
File.WriteAllText(Path.Combine(FileSystem.AppDataDirectory, "config.json"), JsonSerializer.Serialize(settings));
CacheDirectory 专用于可丢弃的临时内容
适合图片缩略图、API 响应缓存、离线预加载资源等——丢了能重拉,但存着能提升体验。
- 路径通过 FileSystem.CacheDirectory 获取,系统可能在空间不足时自动清理
- iOS 和 Android 都明确不保证持久性,不能放重要数据
- 建议加简单校验逻辑,读取前先
File.Exists,不存在就重建
外部共享文件走 FilePicker 或系统 API
如果用户要导出报告、导入 Excel、或把照片存到相册,就不能硬写外部路径——得用平台合规方式。
- 导出给用户:用 FilePicker.Default.SaveAsync() 弹系统保存对话框,路径由系统决定
- 导入用户文件:用 FilePicker.Default.PickAsync(),返回
FileResult流,只读不碰原始路径 - Android 10+ 和 iOS 默认禁止直接写
/sdcard/Download等公共目录,硬写会失败或被拒审
基本上就这些。AppData 存稳、Cache 存轻、共享走 Pick/Save——不复杂但容易忽略路径语义,选错一个就可能丢数据或过不了审核。






