2016-12-10 194 views
0

我看到一些人已经在这里提出类似的问题,但没有答案似乎适用于我的情况。我创建软件作为我的最终作业,可以生成许多不同的项目文件夹和文件,我希望将它们存储在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应用程序中完成所有这些工作,但我真的希望看到UWP是如何工作的,而且我喜欢在多个设备上运行的想法。

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

回答

1

DocumentsLibrary是一个非常特殊/限制的能力,也AFAIK你将不得不作出特殊的要求,以发布应用程序到商店与它。通常,您只能访问应用程序关联的文件(不确定是否包含文件夹创建)。此外,您的应用程序将不得不fulfill special requirements

要使用documentsLibrary特殊能力,应用程序必须:

  • 使用有效的OneDrive网址或资源ID促进特定的OneDrive内容跨平台的离线访问

  • 保存打开的文件到用户的OneDrive自动脱机

另请参阅DocumentsLibrary at MSDN

也许更是让用户pick a folder first with the picker,然后保存在FutureAccessListMostRecentlyUsed进一步访问。在这样的文件夹中,您拥有完全的权限(不确定,但也许他也可以选择文件夹Documents)。

作为一个侧面说明 - 而不是你的代码和零检查,你可以使用:

await yourFolder.CreateFolderAsync("Project_1", CreationCollisionOption.OpenIfExists); 
+0

谢谢您的回答,我想那时我会尽量避免文件的文件夹,你也许有任何想法,我是否可以永久存储数据,直到用户决定选择将其全部导出为止。再次感谢所有的帮助。 –

+0

@LaurentResman使用* LocalFolder * - 数据将一直存在,直到您删除它或用户卸载应用程序。然后根据用户的请求将数据导出到拾取的文件夹。 – Romasz

+0

谢谢,对不起,因为我一直在问,你将如何设置代码在localfolder中创建子文件夹?并在哪里找到它? –

相关问题