Windows App SDK为打包的应用提供强大的文件管理功能。 可以使用 Windows.Storage、Windows.Storage.Streams 和 Microsoft.Windows.Storage.Pickers 命名空间中的 API,以有效地读取和写入文件中的各种数据格式,并管理文件和文件夹。
从 Windows 10 开始,Windows 桌面应用有许多与文件、文件夹、库和设置相关的 API。 这些功能通过由 Windows App SDK、Windows Runtime (WinRT) 和 .NET API 组合使用,后者由 Windows App SDK、Windows SDK 和 .NET SDK 提供。
使用Windows App SDK选取器读取和写入数据
Windows App SDK版本 1.8 及更高版本中提供了选取器 API。 以下主题提供有关使用选取器 API 让用户在应用中打开和保存文件和文件夹的信息:
| 主题 | Description |
|---|---|
| 在 WinUI 中使用选取器打开文件和文件夹 | 使用Windows App SDK文件和文件夹选取器,让用户在 WinUI 应用中浏览和选择文件或文件夹。 选取器应用程序接口提供熟悉的 Windows 体验,帮助用户导航其设备和云存储位置。 了解如何让用户选择使用 FileOpenPicker 和 FolderPicker 类打开的文件或文件夹。 |
| 在 WinUI 中使用Windows App SDK选取器保存文件 | 生成 WinUI 应用和其他 Windows 客户端应用时,用户通常需要将文档、图像或其他内容等文件保存到其设备上的特定位置。 Windows App SDK提供 FileSavePicker 类,以创建一致的用户友好界面,允许用户选择文件保存位置以及命名文件的名称。 |
WinRT 和 Windows App SDK 选取器之间的主要区别
WinRT Windows.Storage.Pickers 与 UWP 应用使用的一些关键区别如下:
- 现有的 Windows.Storage.Pickers API 返回 StorageFile 和 StorageFolder 对象,而此新的 API 通过 PickFileResult 和 PickFolderResult 类返回基于字符串的路径。 在更复杂的场景中,这简化了 API,并避免了存储功能的复杂性问题。
- 同样,已替换 FileSavePicker.SuggestedSaveFile 属性(返回 StorageFile)。 其功能现在由两个字符串属性覆盖:SuggestedFolder 和 SuggestedFileName。 通过这些选项,可以建议保存对话框的文件夹和文件名。
- 所有新的选取器专为桌面应用设计,并使用 WindowId 属性将选取器链接到其主机窗口,替换模式
WinRT.Interop.InitializeWithWindow.Initialize。 - 新的选取器允许开发人员使用它们,而无需指定 FileTypeFilter 或 FileTypeChoices。 当未设置这些属性时,UWP 选取器会引发异常,但当开发人员未显式配置这些属性时,新选取器默认显示所有文件。
- HomeGroup 位置已从新的 PickerLocationId 枚举中排除,因为从 Windows 10 开始不再支持它。
- FolderPicker.FileTypeFilter已被排除,因为它不适用于文件夹选择。
- 排除已标记为已弃用或“不使用”的方法和属性。 例如 PickSingleFileAndContinue、 ContinuationData、 ResumePickSingleFileAsync 等。
- 排除多用户模式的方法和属性,因为新 API 目前适用于桌面方案,其中每个用户都有自己的交互式会话,并且每个会话完全独立于设备上的其他会话。 这与 Xbox 或其他多用户设备形成鲜明对比。
使用 WinRT 存储 API 访问数据
打包应用可以访问适用于 UWP 应用的所有 WinRT 存储 API。 无论是迁移现有 UWP 应用还是创建新应用,都可以使用这些 API 来读取和写入数据。 在 WinUI 3 应用中使用存储 API 的示例,请参阅使用 Windows App SDK 和 WinRT API 访问文件和文件夹。
使用 .NET 文件 API 访问数据
除了 WinRT API,打包的桌面应用还可以使用 System.IO 命名空间中的.NET API 来读取和写入数据。 创建新的 WinUI project时,其 Package.appxmanifest 文件包含以下设置:
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
声明此受限能力将提供对文件系统、注册表和其他受限能力的完整访问权限。 有关详细信息,请参阅 受限功能声明。 也就是说,使用 .NET 的文件 API 时,该应用程序具有与其他任何 .NET 桌面应用程序相同的文件系统访问权限。
有关在 WinUI 应用中使用 .NET API 的示例,请参阅使用 Windows App SDK 和 .NET API 访问文件和文件夹。
用于处理文件和文件夹的其他资源
如果要开发打包的 WinUI 应用,WinRT storage API 可能是用于读取和写入数据的强大工具。 以下 UWP 主题为希望在其应用中利用这些 API 的开发人员提供了大量信息。
| 主题 | Description |
|---|---|
| 枚举和查询文件和文件夹 | 访问位于文件夹、库、设备或网络位置中的文件和文件夹。 还可以通过构造文件和文件夹查询来查询位置中的文件和文件夹。 |
| 创建、写入和读取文件 | 使用 StorageFile 对象读取和写入文件。 |
| 写入文件的最佳做法 | 了解使用 FileIO 和 PathIO 类的各种文件写入方法的最佳做法。 |
| 获取文件属性 | 获取由 StorageFile 对象表示的文件的属性(顶级、基本和扩展)。 |
| 访问家庭组内容 | 访问存储在用户家庭网络组文件夹中的内容,包括图片、音乐和视频。 |
| 确定Microsoft OneDrive文件的可用性 | 使用 StorageFile.IsAvailable 属性确定Microsoft OneDrive文件是否可用。 |
| 音乐、图片和视频库中的文件和文件夹 | 将音乐、图片或视频的现有文件夹添加到相应的库。 还可以从库中删除文件夹、获取库中的文件夹列表,以及发现存储的照片、音乐和视频。 |
| 跟踪最近使用的文件和文件夹 | 通过将文件添加到应用最近使用的列表(MRU),跟踪用户经常访问的文件。 该平台根据上次访问项的时间对项目进行排序,并在达到列表的 25 项限制时删除最旧的项,从而为你管理 MRU。 所有应用都有自己的 MRU。 |
| 在后台跟踪文件系统更改 | 跟踪对文件系统的更改,即使应用未运行也是如此。 |
| 访问SD卡 | 可以在可选的 microSD 卡上存储和访问非必要数据,尤其是在内部存储有限的低成本移动设备上。 |
| 快速访问文件属性 | 从库中有效地收集文件及其属性列表,以便通过Windows Runtime API 使用。 |
另请参阅
使用 Windows App SDK 和 WinRT API< c0>访问文件和文件夹