如何在.NET MAUI应用的AppDataDirectory下创建文件夹?
.NET MAUI 本地独立用户文件夹实现方案
.NET MAUI 未直接提供UWP中ApplicationData.Current.LocalFolder.CreateFolderAsync()的同名API,但可以通过框架内置的文件系统接口实现完全等效的功能,满足多用户独立目录分类存储的需求,具体实现如下:
- 首先获取应用本地存储根路径:直接调用
FileSystem.Current.AppDataDirectory即可,这个属性会自动适配各平台的应用专属可读写目录,语义和UWP的LocalFolder完全一致,属于应用私有存储,不需要额外申请文件系统权限,应用卸载时目录下的内容会被同步清理。 - 文件夹创建直接使用System.IO内置的API即可,行为和UWP的异步创建方法对齐,参考实现代码:
using System.IO; /// <summary> /// 为指定用户创建独立的存储文件夹 /// </summary> /// <param name="userName">用户名标识,比如user1、user2</param> /// <returns>用户专属目录信息</returns> public async Task<DirectoryInfo> GetOrCreateUserFolderAsync(string userName) { // 拼接用户目录完整路径 string targetPath = Path.Combine(FileSystem.Current.AppDataDirectory, userName); // 目录已存在时直接返回现有目录,不存在则自动创建,不会抛出重复创建异常 DirectoryInfo folder = Directory.CreateDirectory(targetPath); return await Task.FromResult(folder); }
提示:如果需要完全对齐UWP中
CreateFolderAsync的冲突处理逻辑,可以在创建前先通过Directory.Exists(targetPath)判断目录状态,按需选择覆盖原有内容、跳过创建或者抛出异常的逻辑。
该方案会自动适配所有MAUI支持的平台,不需要针对单个平台做单独路径适配:
- Windows端路径对应当前用户下的
AppData/Local/[应用包名]/LocalState,和原UWP的LocalFolder路径完全一致 - Android端对应应用私有目录下的
files文件夹 - iOS/macOS端对应应用沙盒内的
Library目录
后续针对不同用户的文件读写操作,只需要把文件路径和对应用户的文件夹路径拼接即可,天然实现不同用户数据的隔离存储。
内容的提问来源于stack exchange,提问作者Peter DC
相关产品推荐
相关产品推荐

