如何从用户友好(本地化)的路径获取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中是否有一些支持来实现这一点?
编辑:我没有明确回答您问题的本地化部分,但完全有可能您遇到了我下面描述的权限问题。
在没有用户启动的情况下,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);
}