You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# UWP中使用File.WriteAllText()写入文本文件失败

解决UWP中写入Assets目录时的UnauthorizedAccessException问题

嘿,这个问题我太熟了!你遇到的UnauthorizedAccessException是因为UWP应用的安装目录(也就是你看到的AppX\Assets路径)是只读的——这是系统的安全沙箱机制,防止应用篡改自己的安装文件,毕竟这个目录是安装包解压出来的,系统会锁定它的写入权限。

那正确的做法是什么呢?你得把文件写到应用专属的可读写目录里,系统给我们提供了几个选项:

  • LocalFolder:应用的本地私有目录,卸载应用时会被删除,适合存储只在当前设备使用的数据
  • RoamingFolder:会同步到用户的微软账户,适合跨设备同步的小数据
  • TemporaryFolder:临时文件目录,系统可能会自动清理

我给你修改一下代码,用LocalFolder来实现你的需求:

public async Task WriteAsync() {
    string lines;
    try {
        lines = "Hello, World";
        // 获取应用的本地可写文件夹
        var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
        // 创建或覆盖Write.txt文件
        var targetFile = await localFolder.CreateFileAsync("Write.txt", Windows.Storage.CreationCollisionOption.ReplaceExisting);
        // 异步写入文本内容
        await Windows.Storage.FileIO.WriteTextAsync(targetFile, lines);
    } catch (System.Exception e) {
        lines = e.Message;
    }
}

这里有几个要注意的点:

  • 别再用File.WriteAllText这种传统的System.IO API了,UWP的沙箱环境更推荐用Windows.Storage下的异步API,它们能更好地适配权限规则
  • 如果之后需要读取这个文件,同样要从LocalFolder里去读取,而不是Assets目录
  • 如果你需要把文件写到用户能直接找到的地方(比如文档库),那得在应用清单里声明对应的权限,不过一般优先用应用私有目录,既安全又方便

记住:Assets目录只能用来存放应用打包时自带的静态资源(比如图片、默认配置文件),只能读不能写哦!

内容的提问来源于stack exchange,提问作者Steve C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:49:09