在应用程序的第二次运行时访问文件被拒绝
当我尝试使用代码访问SD卡上的文件时,我遇到了一个奇怪的问题:
var path = @"D:Testtest.txt"; try { StorageFile file = await StorageFile.GetFileFromPathAsync(path); } catch (Exception ex) { Debug.WriteLine($"File access failed due to {ex.Message}"); } path = @"Testtest.txt"; StorageFile file2 = await (await KnownFolders.RemovableDevices.GetFoldersAsync()).FirstOrDefault().GetFileAsync(path);
该文件在SD卡上,我已经声明了RemovableStoragefunction,并添加了FileTypeAssociation 。 我可以在第一次调试应用程序时获取该文件,但在第二次运行时,我获得了第一个StorageFile的 UnauthorizedException 。 令人惊讶的是第二次尝试通过RemovableStorage获取文件每次都有效。 如果我只重新启动手机并再次调试应用程序 – 它将再次工作,但仍然只是第一次。
StorageFile.GetFileFromPathAsync()以某种方式限制访问文件? 我错过了什么吗?
更新:
看起来像最新版本的模拟器10856我在每次运行时都会遇到exception,这可能意味着无法通过完整路径访问文件。
选择器允许访问,因为用户向您提供了文件,而不是路径。 winstore应用程序不应该依赖于用户驱动器/文件夹布局,这就是您无权通过绝对路径访问文件的原因。 在这种情况下,我们首先应该允许访问清单文件中的可移动设备,然后我们应该使用系统的RemovebleDevices文件夹来访问允许类型的文件。
你也可以第一次使用绝对路径,这很奇怪。 在我的测试设备中,如果使用绝对路径,我总是会收到UnauthorizedAccessException和“Access is denied”错误。 我的设备是build 10586.11。
上述就是C#学习教程:在应用程序的第二次运行时访问文件被拒绝分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1003119.html