File.Exists(filePath);在控制台应用程序中可以很好地工作,但是当我在uwp中执行相同的操作时,它不会检测到文件。
我试图在各种方法上设置断点,并尝试进入任何可以为我提供有关此问题的信息的步骤,但是无论我尝试什么,我都一无所获。
UWP应用中的代码:
string path = @"C:\Users\Name\Desktop\image.jpg";
if (File.Exists(path))
{
ProcessFile(path);
}
else if (Directory.Exists(path))
{
ProcessDirectory(path);
}
UWP: 当它命中File.Exists时,我得到的返回值为false,是的,我知道图像在哪里。
控制台: 当它命中File.Exists时,我得到的返回值为true,然后继续进行调用的方法而没有任何问题。
我希望我的代码找到一个File,并将filePath传递到名为“ processFile”的方法中。
UWP应用程序是否无法访问其LocalStorage之外的文件,还是我没有看到的另一个问题?
答案 0 :(得分:4)
UWP无法直接访问应用程序文件夹和应用程序数据文件夹之外的文件。那是只能通过System.IO
API访问的两个位置。
如果启用了适当的功能-例如访问库或StorageFile
或使用文件/文件夹选择器,则可以使用broadFileSystemAccess
API访问更多位置。特别是,broadFileSystemAccess
允许您访问整个文件系统,但您的应用程序应有充分的理由这样做(否则它将无法通过Microsoft Store认证过程)。
有关更多信息,请参见Docs。
答案 1 :(得分:2)
这是正确的。 UWP应用已被沙箱化,无法以这种方式访问LocalStorage之外的文件。
如果要在用户文件系统上打开文件,则必须使用FileOpenPicker.PickSingleFileAsync
或类似的命令提示用户选择文件,然后您就可以使用该文件。