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