**** 通用 Windows 平台 (UWP) 应用深度解析:如何突破存储限制,自由访问文件与目录?

时间:2025-01-10 00:15 分类:其他教程

引子:

在 Windows 10 的广袤天地中,通用 Windows 平台 (UWP) 应用如同一位身怀绝技的探险家,不断探索着应用存储空间的边界。但在这片未知的领域里,它们是否也能自由地访问那些存储之外的文件和目录呢?今天,就让我们一起揭开这个神秘的面纱。

一、UWP 应用的存储限制

当 WPF 应用顺利迁移到 UWP 平台时,它发现原本熟悉的文件和目录访问方式变得不再适用。最让它们头疼的是,UWP 应用不再支持 Directory.Exists 这一便捷的方法。这意味着,想要探索存储之外的世界,UWP 应用需要另辟蹊径。

二、访问存储之外的文件

UWP 应用默认只能访问特定目录和文件:在清单文件中声明的目录、通过 FileOpenPicker 或 FolderPicker 用户选择的目录、来自 FutureAccessList 或 MostRecentlyUsedList 的文件,以及通过文件扩展名关联或共享打开的文件。这些途径虽然有限,但对于 UWP 应用来说,已经足够探索一番了。

三、解决方案

  1. 使用 FutureAccessList 和 FolderPicker

    在应用清单中声明 "futureAccessList" 功能,并利用 FolderPicker 允许用户选择目录。随后,将选定的目录添加到 FutureAccessList 中。这样,UWP 应用就可以自由地访问这些目录下的文件了。

    // 示例代码:将目录添加到 FutureAccessList
    var futureAccessList = ApplicationData.CurrentFutureAccessList;
    var folderPicker = new FolderPicker();
    folderPicker.ViewMode = PickerViewMode.Thumbnail;
    folderPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
    folderPicker.FileTypeFilter.Add(".png");
    folderPicker.FileTypeFilter.Add(".jpg");
    
    var folder = await folderPicker.ShowAsync();
    if (folder != null)
    {
        futureAccessList.AddFolder(folder);
    }
    
  2. 授予广泛的文件系统访问权限(仅限 Windows 10 版本 17134 及更高版本)

    在应用清单中声明 "broadFileSystemAccess" 功能,并将应用提交到应用商店进行审核。一旦获得批准,UWP 应用就可以根据用户同意获得对整个文件系统的访问权限。

    <!-- 示例代码:在应用清单中声明 broadFileSystemAccess 功能 -->
    <Capabilities>
        <Capability Name="internetClient" />
        <uap:Capability Name="broadFileSystemAccess" />
    </Capabilities>
    

四、附加说明

  • FutureAccessList 方法在应用重启后仍然有效,这意味着 UWP 应用可以长期保存用户选择的目录,并随时访问它们。

  • "broadFileSystemAccess" 功能虽然授予了广泛的访问权限,但也需要额外的审查和运行时用户同意。因此,UWP 应用必须能够妥善处理访问被拒绝的情况,并向用户提供友好的反馈。

结语:

通过以上方法,UWP 应用终于突破了存储空间的限制,可以自由地访问文件和目录了。这无疑为 UWP 应用的发展注入了新的活力,让它们能够更好地服务于广大用户。

声明:

1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。

2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。

3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。

4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。

本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 0人参与,0条评论
查看更多

Copyright 2005-2024 yuanmayuan.com 源码园 版权所有 备案信息

声明: 本站非腾讯QQ官方网站 所有软件和文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告