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

时间:2014-04-19 15:15:10

标签: c# windows-runtime windows-8.1

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

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

StorageFolder.DisplayName 

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

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

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

WinRT API是否有一些支持来实现这一目标?

2 个答案:

答案 0 :(得分:4)

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

如果没有用户启动,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);

请注意,此示例中绝对没有异常处理。检查链接(尤其是后者)以获取更多详细信息。

**如您的示例所示,但是如果没有此标准,您可以访问标准文件夹/文件资源。

答案 1 :(得分:1)

您可以通过手动指定路径将StorageFolder放入应用安装路径 - Package.Current.InstalledLocation.Path,例如您下载了包含子文件夹的文件夹,并且您想从那里获取文件,您可以#39 ; ll使用:

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);
 }