UWP 在文档和图片库中保存文件

luk*_*ols 3 c# save access-denied documentsdirectory uwp

我正在尝试制作一个 UWP 应用程序,它可以将保存在他自己存储中的文件导出到文档库中。

在 Package.appxmanifest 中,我插入了以下几行:

<uap:Capability Name="picturesLibrary" />
<uap:Capability Name="documentsLibrary" />
Run Code Online (Sandbox Code Playgroud)

获取路径的代码是这样的:

StorageFolder storageFolder = await KnownFolders.GetFolderForUserAsync(null /* current user */, KnownFolderId.DocumentsLibrary);            
string path = storageFolder.Path + "\\" + fileName; 
Run Code Online (Sandbox Code Playgroud)

保存文件的代码是这样的:

FileStream writer = new FileStream(filePath, FileMode.Create);
Run Code Online (Sandbox Code Playgroud)

此时,程序启动此异常:

Access to the path 'C:\Users\luca9\AppData\Roaming\Microsoft\Windows\Libraries\Documents.library-ms' is denied.
Run Code Online (Sandbox Code Playgroud)

在我的 950XL 上,例外情况类似:

Access to the path 'C:\Data\Users\DefApps\APPDATA\ROAMING\MICROSOFT\WINDOWS\Libraries\Documents.library-ms' is denied.
Run Code Online (Sandbox Code Playgroud)

我已经尝试过文档和图片库,但我得到了同样的例外。

我该如何解决?

先感谢您,

卢卡

Rom*_*asz 5

不要使用路径获取FileStream - 该应用程序没有权限。由于您已经拥有StorageFolder,请使用它创建一个StorageFile,然后使用其中一种方法从中获取流,例如:

var file = await storageFolder.CreateFileAsync("fileName");
using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
    // do what you want
}
Run Code Online (Sandbox Code Playgroud)