我看到有些人已经在这里问过类似的问题,但是没有答案似乎适合我的情况。我正在创建软件作为我的最终作业,它将生成许多不同的项目文件夹和文件,我希望将它们存储在Documents文件夹中,以便用户可以轻松访问它。
我在清单文件中添加了“文档”:
<Capabilities>
<Capability Name="internetClient" />
<uap:Capability Name="documentsLibrary"/>
到目前为止,我尝试使用以下代码完成文件夹创建:
var appFolder = await KnownFolders.DocumentsLibrary.GetFolderAsync("Project_1");
if (appFolder == null)
{
appFolder = await KnownFolders.DocumentsLibrary.CreateFolderAsync("Project_1");
}
但是调试工具给出了一个错误,即Documents文件夹可能是只读的。
我想当这段代码成功创建文件夹时,我还可以添加斜杠来创建子文件夹的子文件夹,对吗?
很抱歉,如果我问的是愚蠢的问题,我知道如何在form / wpf app中完成所有这些工作,但我真的希望看到UWP如何工作,我喜欢在多个设备上运行的想法。
提前感谢您的所有时间和帮助!
答案 0 :(得分:1)
DocumentsLibrary 是一种非常特殊/受限制的功能,也是AFAIK,您必须发出特殊请求才能将应用程序发布到商店。通常,您只能访问应用与之关联的文件(不确定是否包含文件夹创建)。此外,您的应用必须fulfill special requirements:
要使用documentsLibrary特殊功能,应用必须:
使用有效的OneDrive URL或资源ID促进对特定OneDrive内容的跨平台脱机访问
离线时自动将打开的文件保存到用户的OneDrive
也许更好的方法是允许用户pick a folder first with the picker,然后将其保存在 FutureAccessList 或 MostRecentlyUsed 中以便进一步访问。在这样的文件夹中,您拥有用户允许的完全权限(不确定,但也许他也可以在文档中选择文件夹)。
作为旁注 - 您可以使用:
代替您的代码和空检查await yourFolder.CreateFolderAsync("Project_1", CreationCollisionOption.OpenIfExists);