在文档文件夹

时间:2016-12-10 21:40:01

标签: c# visual-studio uwp

我看到有些人已经在这里问过类似的问题,但是没有答案似乎适合我的情况。我正在创建软件作为我的最终作业,它将生成许多不同的项目文件夹和文件,我希望将它们存储在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如何工作,我喜欢在多个设备上运行的想法。

提前感谢您的所有时间和帮助!

1 个答案:

答案 0 :(得分:1)

DocumentsLibrary 是一种非常特殊/受限制的功能,也是AFAIK,您必须发出特殊请求才能将应用程序发布到商店。通常,您只能访问应用与之关联的文件(不确定是否包含文件夹创建)。此外,您的应用必须fulfill special requirements

  

要使用documentsLibrary特殊功能,应用必须:

     
      
  • 使用有效的OneDrive URL或资源ID促进对特定OneDrive内容的跨平台脱机访问

  •   
  • 离线时自动将打开的文件保存到用户的OneDrive

  •   

另请参阅DocumentsLibrary at MSDN

也许更好的方法是允许用户pick a folder first with the picker,然后将其保存在 FutureAccessList MostRecentlyUsed 中以便进一步访问。在这样的文件夹中,您拥有用户允许的完全权限(不确定,但也许他也可以在文档中选择文件夹)。

作为旁注 - 您可以使用:

代替您的代码和空检查
await yourFolder.CreateFolderAsync("Project_1", CreationCollisionOption.OpenIfExists);