【问题标题】:How to get all sub folders and its files - UWP如何获取所有子文件夹及其文件 - UWP
【发布时间】:2017-11-17 14:57:49
【问题描述】:

我在桌面上有一个名为 student_names 的固定文件夹。它包含子文件夹,每个子文件夹都包含其文件。现在我想将这些子文件夹及其相应的文件名存储在一个数组列表中。怎么可能?

【问题讨论】:

  • 你有没有尝试过,只是为了给你一个想法,你需要在子文件夹中递归遍历,一点谷歌可以帮助你。
  • 已尝试使用 StorageFolder。但无法修复它到 Desktop/student_names 的路径
  • 哦,我跳过了看到您正在访问桌面文件夹,这在 UWP 中是不可能的,UWP 在沙盒模型中工作。

标签: c# uwp


【解决方案1】:

UWP 应用程序无法直接访问文件夹(应用程序文件夹除外),除非用户明确提供对文件夹的访问权限(至少一次)。

因此,为了始终能够读取/写入特定文件夹,您需要首先要求用户选择特定文件夹。一旦用户选择了一个文件夹,您可以将其保存到FutureAccessList,这将为您提供一个令牌,以便您直接访问该文件夹(无需用户干预)以供将来使用..

 var picker = new FolderPicker();
 picker.FileTypeFilter.Add("*");
 var folder = await picker.PickSingleFolderAsync();
 //add selected folder to FutureAccessList
StorageApplicationPermissions.FutureAccessList.AddOrReplace("futureAccessToken", folder);

从下次启动(或您实现的任何逻辑)开始,您可以访问该文件夹并列出其内容

 var folder = await StorageApplicationPermissions.FutureAccessList.
                 GetFolderAsync("futureAccessToken");
 IReadOnlyList<StorageFile> fileList = await folder.GetFilesAsync();

因此,您只需提供对父文件夹(在您的情况下是 student_names)的访问权限,然后您就可以访问其子文件夹和文件。

希望这会有所帮助..

【讨论】:

    【解决方案2】:

    很遗憾,这可能是不可能的。自从我上次开发 UWP 应用程序以来已经有一段时间了,但是如果您的应用程序无法访问几个指定文件夹(例如,应用程序文件夹和一些其他特殊文件夹,如 Document、Music、Picture 等)之外的文件系统声明适当的权限)。您一般无法访问 Desktop 或 C:\ 文件夹上的文件夹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 2017-04-06
      相关资源
      最近更新 更多