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

本文关键字:路径 获取 StorageFolder 本地化 用户 | 更新日期: 2023-09-27 17:59:05

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

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

StorageFolder.DisplayName 

示例:文件夹"C:''Users"在"德语"窗口中显示为"C:''Benutzer"。

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

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

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

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

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

在没有用户启动的情况下,WinRT无法访问文件系统**。

他们在WinRT中所描述的机制是要求用户通过文件夹选择器选择位置,然后将所选文件夹添加到FutureAccessList中,以便稍后进行编程访问。

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

您可以稍后使用以下方法访问该文件夹。

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

请注意,在这个示例中绝对没有异常处理。查看链接(尤其是后者)以了解更多详细信息。

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

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

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