【问题标题】:Access a StorageFolder with ms-appdata使用 ms-appdata 访问 StorageFolder
【发布时间】:2014-01-20 23:58:57
【问题描述】:

我有一个应用程序,我必须在其中存储和使用文件夹和文件的绝对路径。我有一个非常简单的问题。当我像这样存储文件夹的路径时:“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,反之亦然?

编辑:澄清问题。

【问题讨论】:

  • 我相信 ms-appdata:///local/my_folder 等于 "C:\Data\Users\DefApps\AppData\{2F102375-2740-441C-BF2F-808608F47DA1}\LocalState\my_folder"
  • 没有。我已经检查了 WP Power Tools,my_folder 存在于我的应用程序中,但是当我尝试为您的路径获取 StorageFolder 时,它会引发 FileNotFound 异常,但它适用于我的。
  • 你是什么意思,你试图获取StorageFolder 的路径是什么?您能否编辑问题以包含相关的代码行?

标签: c# windows-runtime storagefolder


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多