File.Exists是否不能在UWP项目中使用?

时间:2019-05-13 11:06:56

标签: c# uwp

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之外的文件,还是我没有看到的另一个问题?

2 个答案:

答案 0 :(得分:4)

UWP无法直接访问应用程序文件夹和应用程序数据文件夹之外的文件。那是只能通过System.IO API访问的两个位置。

如果启用了适当的功能-例如访问库或StorageFile或使用文件/文件夹选择器,则可以使用broadFileSystemAccess API访问更多位置。特别是,broadFileSystemAccess允许您访问整个文件系统,但您的应用程序应有充分的理由这样做(否则它将无法通过Microsoft Store认证过程)。

有关更多信息,请参见Docs

答案 1 :(得分:2)

这是正确的。 UWP应用已被沙箱化,无法以这种方式访问​​LocalStorage之外的文件。

如果要在用户文件系统上打开文件,则必须使用FileOpenPicker.PickSingleFileAsync或类似的命令提示用户选择文件,然后您就可以使用该文件。

进一步阅读:Working with Files in UWP applications