繁体   English   中英

应用程序第二次运行时拒绝访问文件

[英]Access to file denied on app's second run

我在尝试使用代码访问 SD 卡上的文件时遇到了一个奇怪的问题:

var path = @"D:\Test\test.txt";
try
{
    StorageFile file = await StorageFile.GetFileFromPathAsync(path);
}
catch (Exception ex) { Debug.WriteLine($"File access failed due to {ex.Message}"); }

path = @"Test\test.txt";
StorageFile file2 = await (await KnownFolders.RemovableDevices.GetFoldersAsync()).FirstOrDefault().GetFileAsync(path);

该文件在 SD 卡上,我已经声明了RemovableStorage功能,并添加了FileTypeAssociation 我可以在第一次调试应用程序时获取该文件,但是在第二次运行时,我收到了第一个StorageFile 的UnauthorizedException 令人惊讶的是,通过RemovableStorage获取文件的第二次尝试每次都有效。 如果我只重新启动手机并再次调试应用程序 - 它会再次工作,但仍然只是第一次。

通过StorageFile.GetFileFromPathAsync()访问文件是否受到某种限制? 我错过了什么吗?


更新:

似乎在最新版本的模拟器 10856 上,每次运行时都会出现异常,这可能意味着无法通过完整路径访问文件。

选择器允许访问,因为用户向您提供了文件,而不是路径。 winstore 应用程序不应依赖于用户驱动器/文件夹布局,这就是您无权通过绝对路径访问文件的原因。 在这种情况下,我们应该首先在清单文件中允许访问可移动设备,然后我们应该使用系统的 RemovebleDevices 文件夹访问允许类型的文件。

同样奇怪的是,您可以第一次使用绝对路径。 在我的测试设备中,如果使用绝对路径,我总是会收到 UnauthorizedAccessException 和“访问被拒绝”错误。 我的设备是构建 10586.11。

暂无
暂无

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

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