【问题标题】:(Any) folder listener for UWP ApplicationUWP 应用程序的(任何)文件夹侦听器
【发布时间】:2019-10-21 13:56:14
【问题描述】:

我需要访问本地文件系统中某处的随机文件夹。

UWP 通常无法访问它们,并且设置“broadFileSystemAccess”的方法无法正常工作。

在我的 UWP 应用程序中访问这些文件夹和文件的好方法是什么?我考虑编写一个小型 WPF 应用程序,将这些文件从随机文件夹复制到我的 UWP 应用程序可以访问的文件夹中。

编辑:问题是,我想在新设备上设置一次路径,即使在重新启动后它也应该保留对文件夹的访问权限。 FilePicker 解决方案有可能吗?我设法让 broadFileSystemAccess 工作,但这里的问题是,在每台设备上,您需要首先为此应用程序手动启用它。遗憾的是,这不是一个选项,因为此应用程序将在许多客户设备上运行。

感谢您的任何建议。

亲切的问候

【问题讨论】:

  • “UWP 通常无法访问它们,并且设置“broadFileSystemAccess”的方法无法正常工作。”你必须解释它。这就好比说UWP不行,甚至Windows也不行。它有效,也许你正在寻找一些隐藏的文件夹,但你没有提到,如上所述,这是不正确的。
  • 谢谢,我编辑了我的帖子。我希望现在更清楚了。

标签: c# xamarin uwp


【解决方案1】:

您可以使用FileOpenPicker 访问本地位置,例如使用FileOpenPicker 访问PictureLibrary。有关 FileOpenPicke 的更多信息,您可以参考此document

var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
picker.FileTypeFilter.Add(".jpg");
picker.FileTypeFilter.Add(".jpeg");
picker.FileTypeFilter.Add(".png");

Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
    // Application now has read/write access to the picked file
    this.textBlock.Text = "Picked photo: " + file.Name;
}
else
{
    this.textBlock.Text = "Operation cancelled.";
}

我不知道您如何使用 broadFileSystemAccess 功能并导致此意外行为。一般来说,broadFileSystemAccess 能力可以让你能够使用StorageFolder() API 访问文件夹,例如:

StorageFile file = await StorageFile.GetFileFromPathAsync(@"D:\test.txt");

有关访问其他位置的更多信息,您可以参考此document

更新

有一种方法可以访问本地位置。您可以使用MRUFuture-access list。比如使用FileOpenPicker获取一个文件,并将这个文件保存到Future-access listMRU

Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
string mruToken = Windows.Storage.AccessCache.StorageApplicationPermissions.MostRecentlyUsedList.Add(file, "20120716");
string faToken = Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(file);

有关MRUFuture-access list的更多信息,您可以参考此document

【讨论】:

  • 这个问题是,我想在新设备上设置一次路径,即使在重新启动后它也应该保持对文件夹的访问。 FilePicker 解决方案有可能吗?我设法让 broadFileSystemAccess 工作,但这里的问题是,在每台设备上,您需要首先为此应用程序手动启用它。遗憾的是,这不是一个选项,因为此应用程序将在许多客户设备上运行。
  • 感谢更新的答案。重新启动后我是否仍然可以访问该文件夹(可能同时该文件夹确实获得了我需要阅读的更多文件)还是只会在开始时将文件复制到我的应用程序中?我会查看您链接的文档。
  • @Johnny FileOpenPicker 需要在重启后再次选择文件。 broadFileSystemAccess 能力更方便,因为它只需要设置一次。无论您的计算机是否重新启动,它仍然可以访问文件系统中的任何位置。重启后,future-access list 有权访问重启前保存的文件,但它只保存存储文件,不保存存储文件夹。
猜你喜欢
  • 2018-05-22
  • 2019-01-13
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 2014-04-23
  • 2020-10-29
  • 2018-01-01
  • 2012-08-30
相关资源
最近更新 更多