我遇到了一个问题,我可以从应用程序安装目录中的文件中读取文件,但是无法写入文件。
在下面的代码中,我打开一个文件进行读取,处理,处置流指针,然后尝试打开该文件进行写入。
//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()方法没有完全清除它,我尝试注释掉所有读取访问权限。同样的错误。 (是的,我知道,我应该使用“使用”,但我认为这不是问题所在)
我不确定为什么无法获得写访问权限。忠告表示感谢!
答案 0 :(得分:1)
从代码中指定的路径看来,您似乎正在尝试写入应用程序包中的文件。此文件位于您的应用的安装文件夹中,您只能对其进行只读访问。
简而言之,您可以读取安装目录中的应用程序文件,但不能写入该目录中的文件。在应用程序安装目录中创建新文件时也是如此。
看看Microsoft的这份文档,它说明了UWP中的文件访问:window.open()
从上面链接的文档中,重要的部分是:
该应用程序的安装目录是只读位置。您无法通过文件选择器访问安装目录。
现在,如果您打算更新此文件的内容,则应将其移至“应用程序数据”文件夹(https://www.mywebsite.ext/earth?year=&foo=1&bar=0
)。允许UWP应用在该目录中读写(和创建新文件)。