4

我有一个应用程序,我必须在其中存储和使用文件夹和文件的绝对路径。我有一个非常简单的问题。当我像这样存储文件夹的路径时:“ms-appdata:///local/my_folder”并尝试从该路径获取 StorageFolder,它会引发 FileNotFoundException。为什么会抛出这个异常?

AFAIK“ms-appdata:///local/my_folder”等于“C:\Data\Users\DefApps\AppData\{2F102375-2740-441C-BF2F-808608F47DA1}\Local\my_folder”。StorageFolder 的 GetFolderFromPathAsync 静态方法接受后一个字符串。如何从前者创建后者 Uri,反之亦然?

编辑:澄清的问题。

4

1 回答 1

4

静态方法 GetFolderFromPathAsync 使用 :\ 语法。ms-appdata:/// 不是路径名,而是 URI 方案,旨在与 Windows.Storage.StorageFile.GetFileFromApplicationUriAsync 方法一起使用。不幸的是,文件夹没有等效的方法。

这为您提供了几个选择。一种是您可以在该文件夹中存储一个简单的参考文件,使用 GetFileFromApplicationUriAsync 获取其 StorageFile,然后查看 StorageFile.GetParentAsync 以获取 StorageFolder。

另一种选择是从 Windows.Storage.ApplicationData.LocalFolder 获取本地文件夹,然后在路径的相对部分执行 GetFolderAsync。如果您必须重建文件路径,则获取 LocalFolder,将您的相对文件夹路径附加到其 Path 属性。这样,您将永远不会依赖确切的用户路径到他们的应用程序数据。

于 2014-01-21T04:19:11.283 回答