2016-12-10 242 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中創建子文件夾?並在哪裏找到它? –

相關問題