在.NET MAUI中如何保存临时文件并获取对应路径?
.NET MAUI 跨平台临时文件存储与路径获取方案
1. 临时目录路径获取
MAUI 官方封装了跨平台文件系统访问API,无需单独做平台适配,直接调用 FileSystem.Current.CacheDirectory 即可获取当前平台对应的应用沙箱临时缓存目录,各平台映射的实际路径如下:
- Windows:
C:\Users\<当前用户名>\AppData\Local\Packages\<应用包标识>\LocalCache - iOS:应用沙箱内的
Library/Caches目录 - Android:应用沙箱内的
data/data/<应用包名>/cache目录
该目录默认符合各平台沙箱规则,无需申请额外存储权限即可读写,系统会在设备存储空间不足时自动清理该目录下的文件。
2. 临时文件存储操作示例
2.1 创建随机命名临时文件
// 获取应用沙箱临时缓存目录 string cacheDir = FileSystem.Current.CacheDirectory; // 生成随机文件名,避免重名冲突 string tempFileName = Path.GetRandomFileName(); // 拼接得到完整临时文件路径 string tempFilePath = Path.Combine(cacheDir, tempFileName); // 写入文本内容示例 await File.WriteAllTextAsync(tempFilePath, "这是临时文件存储的测试内容"); // 读取临时文件内容示例 string content = await File.ReadAllTextAsync(tempFilePath);
2.2 创建指定文件名的临时文件
如果需要固定文件名方便后续检索,直接替换随机文件名为指定名称即可:
string cacheDir = FileSystem.Current.CacheDirectory; // 指定固定临时文件名,例如临时截图 string tempFileName = "temp_screenshot.png"; string tempFilePath = Path.Combine(cacheDir, tempFileName); // 写入二进制流示例,例如存储图片数据 byte[] imageBytes = 此处为你的图片二进制数据; await File.WriteAllBytesAsync(tempFilePath, imageBytes);
3. 注意事项
- 不要将需要长期留存的业务数据存入
CacheDirectory目录,系统清理该目录内容不会提前通知应用 - 临时文件使用完成后建议主动调用
File.Delete(tempFilePath)删除,避免占用用户设备存储空间 - 避免直接使用
Path.GetTempFileName()生成临时文件路径,该方法在部分平台会指向系统全局临时目录,存在无读写权限的问题 - 读取临时文件前建议先调用
File.Exists(tempFilePath)做存在性校验,避免文件被系统清理后引发异常
内容的提问来源于stack exchange,提问作者Elie Tebchrani
相关产品推荐
相关产品推荐

