从应用程序存储加载文件时,调用 COM 组件返回错误 HRESULT E_FAIL - Windows 8.1

Error HRESULT E_FAIL has been returned from a call to a COM component when loading file from app storage - Windows 8.1

我正在尝试从我的应用程序文件夹中检索文件,但我遇到了这个异常:

Error HRESULT E_FAIL has been returned from a call to a COM component.

System.Runtime.InteropServices.COMException

我试图将文件从 Assets 文件夹中移出并在根文件夹中找到它,但我遇到了同样的问题!

这是我的代码:

try
{
    StorageFile data = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx://Assets/data.json"));
    //...
}
catch (FileNotFoundException exception)
{
    Debug.WriteLine(exception);
}

有什么帮助吗?

问题出在您的文件 uri 中,您必须在 uri 的这一部分添加另一个斜线 '/' ms-appx:///,您的代码将如下所示:

try
            {
                StorageFile data = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/data.json"));
                //...
            }
            catch (FileNotFoundException exception)
            {
                Debug.WriteLine(exception);
            }

而且,请确保在文件属性菜单的 Build Action 中设置 Content,否则您将面临 FileNotFoundException :)。