MAUI中使用Community FileSaver无需文件选择器保存文件的方法
MAUI无需用户确认自动保存临时文件方案
你当前用的CommunityToolkit FileSaver默认就是弹出文件选择器让用户指定保存位置,要实现自动保存临时文件,直接用MAUI自带的文件系统API就行,步骤如下:
获取跨平台临时目录
MAUI提供了FileSystem.CacheDirectory,这是系统维护的临时缓存目录,不同平台对应路径不同(比如Android的/data/data/[包名]/cache、iOS的Library/Caches),无需额外权限,系统还会自动清理过期文件,完全适合临时存储需求。写入临时文件
直接生成唯一文件名(避免冲突),然后将内容写入该路径:
// 生成唯一临时文件名 var tempFileName = $"{Guid.NewGuid()}.txt"; var tempFilePath = Path.Combine(FileSystem.CacheDirectory, tempFileName); // 写入文本内容到临时文件 File.WriteAllText(tempFilePath, "Text File");
如果是流数据(比如你原来的MemoryStream),可以用异步写法:
using var stream = new MemoryStream(Encoding.Default.GetBytes("Text File")); await File.WriteAllBytesAsync(tempFilePath, stream.ToArray());
- 用默认应用打开文件
写完文件后,调用Launcher.OpenAsync即可唤起对应类型的默认应用:
await Launcher.OpenAsync(new OpenFileRequest { File = new ReadOnlyFile(tempFilePath) });
补充说明
- 如果需要更持久的存储(不想被系统自动清理),可以替换成
FileSystem.AppDataDirectory,这个目录下的文件会长期保留,除非用户卸载应用。 - CommunityToolkit的FileSaver定位就是让用户自主选择保存位置,自动保存场景下直接操作文件系统API更高效。
内容的提问来源于stack exchange,提问作者Andrew Taylor
相关产品推荐
相关产品推荐

