【问题标题】:How to get a StorageFolder from an user-friendly (localized) path?如何从用户友好(本地化)路径获取 StorageFolder?
【发布时间】:2016-02-19 21:20:14
【问题描述】:

如何从用户友好(本地化)路径获取 StorageFolder?

文件夹可以有一个用户友好(本地化)的名称。该名称可以通过以下方式阅读:

StorageFolder.DisplayName 

示例:文件夹“C:\Users”在“德语”Windows 上显示为“C:\Benutzer”。

我想从用户友好的路径(如 Windows 资源管理器)获取 StorageFolder。但是,调用以下方法会引发异常:

var folder = await StorageFolder.GetFolderFromPathAsync(@"C:\Benutzer");

WinRT API 中是否有一些支持来实现这一点?

【问题讨论】:

  • 我不确定它是否受支持,但我从未见过这样的东西。一种解决方法可能是构建一个表映射知道文件夹显示名称到真实名称,然后预处理您的路径以最终检测和替换显示名称。
  • @Tristan:不幸的是,您以错误的方式修改了我的问题。我没有在 Windows 应用商店应用程序中使用 WinRT API。我在不受文件系统访问限制的 .NET WPF 应用程序中使用它。
  • 很抱歉,在您的问题和标签中具体说明会带来好处。如果需要,请随时恢复编辑。

标签: c# windows-runtime windows-8.1


【解决方案1】:

编辑:我没有明确回答您问题的本地化部分,但您完全有可能遇到我在下面描述的权限问题。

在 WinRT 中,如果没有用户启动,则无法访问文件系统**。

他们在 WinRT 中所描述的机制是要求用户pick the location via a folder picker,然后将该选择的文件夹添加到 FutureAccessList 以便稍后以编程方式访问。

StorageFile folder = await folderPicker.PickSingleFolderAsync();
folderToken = Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(folder);
//Keep this folder token to access the folder programmatically later

您可以稍后使用以下内容access that folder

StorageFolder folder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(folderID);

请注意,此示例中绝对没有异常处理。查看链接(尤其是后者)了解更多详情。

** 与您的示例一样,但是您可以在没有此的情况下访问标准文件夹/文件资源。

【讨论】:

    【解决方案2】:

    您可以通过手动指定路径来获取位于应用安装路径 - Package.Current.InstalledLocation.Path 中的 StorageFolder,例如,您下载了一个带有子文件夹的文件夹,并且您想从那里获取一个文件,您将使用:

    StorageFolder customAppFolder = await StorageFolder.GetFolderFromPathAsync(Package.Current.InstalledLocation.Path + @"\yourFolder\yourSubfolder");
    

    现在您可以迭代该子文件夹中的文件:

     IReadOnlyList<StorageFile> filesInFolder =await appFolder.GetFilesAsync();
    
      foreach (StorageFile file in filesInFolder){
      Debug.WriteLine(file.Name);
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      相关资源
      最近更新 更多