c# - 尝试将json文件写入应用程序目录时,UWP“拒绝访问路径'...'”
问题描述
我是 UWP 的新手,但我已经使用 C#(桌面应用程序等)很长时间了。我最近尝试像往常一样写入 app 目录中的 json 文件,我收到了这条消息:
Access to the path 'C:\...\setting.json' is denied
这是我使用的代码:
File.WriteAllText(Path.Combine(Directory.GetCurrentDirectory(), "setting.json"), JsonConvert.SerializeObject(Settings));
我觉得这很奇怪,所以我做了一些研究。应用程序目录似乎是只读的。我尝试将属性设置为“正常”,仍然是同样的错误。我试过使用 StorageFolder 和 StorageFile,还是一样的信息。有没有办法使文件夹不是只读的?这在 WPF 应用程序中工作得很好......
解决方案
问题是您没有在文件中声明broadFileSystemAccess
功能。Package.appxmanifest
并broadFileSystemAccess
允许用户有权访问的所有文件。例如:文档、图片、照片、下载、桌面、OneDrive 等。
<Package
...
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp uap5 rescap">
...
<Capabilities>
<rescap:Capability Name="broadFileSystemAccess" />
</Capabilities>
请注意,除了指定capability之外,rescap
namespace是必须要加的,而且还要加到gnorableNamespaces
推荐阅读
- python - Ramer–Douglas–Peucker 算法 (RDP) Python 实现:如何绘制它并将其与数据帧一起使用?
- python - 如何遍历 numpy 数组并执行计算?
- reactjs - 如何在 MUI v5 sx prop 中实现条件样式
- typescript - NodeJS VSCode 最新 1.61.0 上的 Azure 函数停止工作
- excel - 有没有办法让这段代码更短/excel工作表更改
- django - 模板中的 Django-3.2 空路径锚定
- eclipse - 如何在 eclipse/Spring Tool Suite 中使用 Intellij 快捷方式?
- reactjs - 如何在渲染子组件道具之前获取 redux 状态?
- python - Pandas 基于旧数据框创建新数据框
- node.js - Google OAuth 凭据 - 适用于不同的范围