为何调用DownloadsFolder下载图片时会在Downloads内新建子文件夹?
问题原因
这个情况其实是UWP的沙箱安全机制在约束你的代码行为。UWP应用默认运行在隔离的沙箱环境里,为了保护用户的文件系统安全,系统不允许应用直接读写Downloads文件夹的根目录。当你调用DownloadsFolder.CreateFileAsync()时,系统会自动在Downloads目录下创建一个以你的应用名称命名的专属子文件夹,然后把文件存到这个子文件夹里——这就是你看到新建子文件夹的核心原因。
解决方案:获取Downloads根目录的访问权限
如果确实需要把文件直接保存到Downloads根目录,你需要完成以下两步配置:
修改应用清单(Package.appxmanifest)
打开你的Package.appxmanifest文件,添加broadFileSystemAccess权限。你可以直接编辑XML内容,在<Capabilities>节点下插入:<Capability Name="broadFileSystemAccess" />或者在Visual Studio的可视化编辑器中切换到「功能」选项卡,找到「文件系统」并勾选(部分VS版本可能需要手动编辑XML)。
开启系统级文件权限
仅修改清单还不够,你需要在Windows系统设置中给应用手动开启文件访问权限:- 打开「设置」→「隐私和安全性」→「文件系统」
- 找到你的应用,开启“允许此应用访问你的文件系统”的开关
额外说明
- 你的代码里的
CreationCollisionOption.GenerateUniqueName只是用来处理文件名重复的场景(重名时自动生成带后缀的唯一文件名),和创建子文件夹的行为没有关系。 broadFileSystemAccess是受限权限,如果你的应用要提交到Microsoft Store,需要在提交时详细说明使用这个权限的具体用途,否则可能会被审核拒绝。
内容的提问来源于stack exchange,提问作者Alexcandra Khotko
相关产品推荐
相关产品推荐

