繁体   English   中英

UWP StorageFile.OpenAsync访问被拒绝的问题

[英]UWP StorageFile.OpenAsync Access Denied Issue

我遇到了一个问题,我可以从应用程序安装目录中的文件中读取文件,但无法对其进行写入。

在下面的代码中,我打开一个文件进行读取,处理,处置流指针,然后尝试打开该文件进行写入。

//Open file for reading
var SocStorageFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///LastSoc.txt"));
var SocInputStream = await SocStorageFile.OpenReadAsync();
var SocClassicStream = SocInputStream.AsStreamForRead();
var SocStream = new StreamReader(SocClassicStream);

<do stuff with file read>
.....

SocInputStream.Dispose();
SocClassicStream.Dispose();
SocStream.Dispose();

//Open record file for writing
var RandomAccessStream = await 
SocStorageFile.OpenAsync(FileAccessMode.ReadWrite);

当我尝试最后一行以启用写访问权限时,我得到:

System.UnauthorizedAccessException:'访问被拒绝。 (来自HRESULT的异常:0x80070005(E_ACCESSDENIED))'

担心我的Dispose()方法没有完全清除它,我尝试注释掉所有读取访问权限。 同样的错误。 (是的,我知道,我应该使用“使用”,但我不认为这是问题所在)

我不确定为什么无法获得写访问权限。 咨询表示感谢!

从代码中指定的路径来看,您似乎正在尝试写入应用程序包中的文件。 该文件存在于您的应用程序的安装文件夹中,该文件夹仅具有只读访问权限。

简而言之,您可以读取安装目录中的应用程序文件,但不能写入该目录中的文件。 在应用程序安装目录中创建新文件时也是如此。

看看来自Microsoft的这份文档,它说明了UWP中的文件访问: https : //docs.microsoft.com/zh-cn/windows/uwp/files/file-access-permissions

通过上面链接的文档,重要的部分是:

该应用程序的安装目录是只读位置。 您无法通过文件选择器访问安装目录。

现在,如果您打算更新此文件的内容,则应将其移至“应用程序数据”文件夹( ApplicationData.Current.LocalFolder )。 允许UWP应用在该目录中读写(和创建新文件)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM