原文:UWP入门(十一)--使用选取器打开文件和文件夹

很漂亮的功能,很有趣

重要的 API

  • FileOpenPicker
  • FolderPicker
  • StorageFile

通过让用户与选取器交互来访问文件和文件夹。 你可以使用 FileOpenPicker 和 FileSavePicker 类访问文件,并使用 FolderPicker 访问文件夹

1. 文件选取器 UI

文件选取器显示信息以引导用户并在打开或保存文件时提供一致性体验

该信息包括:

  • 当前位置
  • 用户选取的项
  • = 用户可以浏览到的位置的树。 这些位置包括文件系统位置(如音乐或下载文件夹)以及实现文件选取器合约的应用(如相机、照片和 Microsoft OneDrive)

电子邮件应用可能会显示文件选取器,以供用户选取附件

2. 选取器的工作原理

通过选取器,你的应用可以在用户的系统上访问、浏览以及保存文件和文件夹。 你的应用会接收这些选取项作为 StorageFile 和 StorageFolder 对象,然后你能在这些对象上进行操作。

选取器使用一个单一的统一界面,让用户从文件系统或从其他应用选取文件和文件夹。 从其他应用选取的文件与文件系统中的文件类似:它们是作为 StorageFile 对象返回的。 通常,你的应用可以按与其他对象相同的方式对它们进行操作。 其他应用通过参与文件选取器合约使文件可用。 如果你希望你的应用提供文件、保存位置或其他应用的文件更新,请参阅与文件选取器合约集成。

例如,你可能会在你的应用中调用文件选取器,以便你的用户可以打开文件。 这会使你的应用成为调用应用。 文件选取器与系统和/或其他应用交互来让用户导航和选取文件。 当你的用户选择文件时,文件选取器会将该文件返回到你的应用。 这里是从提供的应用(如 OneDrive)中选择文件所遇到的情形的过程

3.选取单个文件:完成代码列表

//1.创建和自定义 FileOpenPicker
var picker = new Pickers.FileOpenPicker();
picker.ViewMode = Pickers.PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = 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.";
}

4. 选取单个文件:分步

使用文件选取器需要创建和自定义文件选取器对象,然后显示文件选取器,以使用户能选取一个或多个项目

4.1 创建和自定义 FileOpenPicker

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

在文件选取器对象上设置与你的用户和应用相关的属性。 有关帮助你确定如何自定义文件选取器的指南

此示例在某个方便的位置创建一种丰富的图片视觉显示,用户可以通过设置以下三个属性从该位置选取:ViewModeSuggestedStartLocationFileTypeFilter

  • 将 ViewMode 设置为 PickerViewMode Thumbnail 枚举值可通过使用图片缩略图创建丰富的视觉显示,以显示文件选取器中的文件。 此操作用于选取可视文件(如图片或视频)。 否则,请使用 PickerViewMode.List。 假定的电子邮件应用可在显示文件选取器之前设置适用于功能的 ViewMode,该应用具有附加图片或视频和附加文档功能

  • 使用 PickerLocationId.PicturesLibrary 将 SuggestedStartLocation 设置为图片可让用户在他们有可能找到图片的某个位置开始。 将 SuggestedStartLocation 设置为适用于要选取的文件类型(例如音乐、图片、视频或文档)的位置。 用户可以从开始位置导航到其他位置。

  • 使用 FileTypeFilter 指定文件类型可保持用户专注于选取相关的文件。 若要将 FileTypeFilter 中以前的文件类型替换为新条目,请使用 ReplaceAll 而不是 Add

4.2 显示 FileOpenPicker

选取单个文件

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.";
}

选取多个文件

var files = await picker.PickMultipleFilesAsync();
if (files.Count > 0)
{
StringBuilder output = new StringBuilder("Picked files:\n"); // Application now has read/write access to the picked file(s)
foreach (Windows.Storage.StorageFile file in files)
{
output.Append(file.Name + "\n");
}
this.textBlock.Text = output.ToString();
}
else
{
this.textBlock.Text = "Operation cancelled.";
}

5. 选取文件夹:完整代码列表

var folderPicker = new Windows.Storage.Pickers.FolderPicker();
folderPicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop;
folderPicker.FileTypeFilter.Add("*"); Windows.Storage.StorageFolder folder = await folderPicker.PickSingleFolderAsync();
if (folder != null)
{
// Application now has read/write access to all contents in the picked folder
// (including other sub-folder contents)
Windows.Storage.AccessCache.StorageApplicationPermissions.
FutureAccessList.AddOrReplace("PickedFolderToken", folder);
this.textBlock.Text = "Picked folder: " + folder.Name;
}
else
{
this.textBlock.Text = "Operation cancelled.";
}

只要你的应用通过选取器访问文件或文件夹,就将它添加到应用的 FutureAccessList 或 MostRecentlyUsedList 以便对进行跟踪。 你可以在如何跟踪最近使用的文件和文件夹中了解有关使用这些列表的详细信息

UWP入门(十一)--使用选取器打开文件和文件夹的更多相关文章

  1. [WebGL入门]十一,着色器编译器和连接器

    注意:文章翻译http://wgld.org/,原作者杉本雅広(doxas).文章中假设有我的额外说明.我会加上[lufy:].另外.鄙人webgl研究还不够深入.一些专业词语,假设翻译有误.欢迎大家 ...

  2. Android 编程之入门开发目录管理器开发抽屉与文件分类-4

    在此目录管理APP里,我们能够尝试引用一些新的元素.在这里我给打击介绍一个叫抽屉的布局,QQ就用到了抽屉布局.不 过他们又在原有的基础上自己开发了新的抽屉布局.而且还蛮高大上的,顺便说说分类管理.这些 ...

  3. Windows 10开发基础——文件、文件夹和库(二)

    主要内容: 使用选取器打开和保存文件 关于文件.文件夹和库,如果深究其实还是有比较多的内容,我们这一次来学习一下选取器就收了.还有上篇博文中读写文本文件的三种方式可以细细体会一下. 文件选取器包含文件 ...

  4. Windows Store App 文件选取器

    使用文件选取器可以访问除上面介绍的"应用程序存储"和"用户库"两个位置之外的本地文件或者文件夹.文件选取器是应用与系统进行交互的一个接口,通过文件选取器可以在应 ...

  5. 重新想象 Windows 8 Store Apps (25) - 选取器: 文件选取窗口, 文件夹选取窗口, 文件保存窗口

    原文:重新想象 Windows 8 Store Apps (25) - 选取器: 文件选取窗口, 文件夹选取窗口, 文件保存窗口 [源码下载] 重新想象 Windows 8 Store Apps (2 ...

  6. 创建用资源管理器打开FTP位置

    FTP快捷方式默认用浏览器打开,而不是用资源管理器打开,管理文件不习惯. 解决方法1:创建桌面快捷方式 新建快捷方式,键入对象位置 %windir%\explorer.exe "ftp:// ...

  7. 2019-2-26-SublimeText-快速打开当前文件的文件夹

    title author date CreateTime categories SublimeText 快速打开当前文件的文件夹 lindexi 2019-02-26 18:45:29 +0800 2 ...

  8. 背水一战 Windows 10 (94) - 选取器: 自定义文件打开选取器

    [源码下载] 背水一战 Windows 10 (94) - 选取器: 自定义文件打开选取器 作者:webabcd 介绍背水一战 Windows 10 之 选取器 自定义文件打开选取器 示例1.演示如何 ...

  9. Windows Store App JavaScript 开发:文件选取器

    正如前面章节C#语言中所介绍的,文件选取器是应用与系统进行交互的一个接口,通过文件选取器可以在应用中直接与文件系统进行交互,访问不同位置的文件或文件夹,或者将文件存储在指定位置.文件选取器分为对文件进 ...

随机推荐

  1. Python爬虫项目整理

    WechatSogou [1]- 微信公众号爬虫.基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典. DouBanSpider [2]- ...

  2. 【dotnet跨平台】Asp.net 正在经历的变革

     [dotnet跨平台]Asp.net 正在经历的变革 Asp.net 正在经历一场变革.从官网:https://get.asp.net/ 我们能够看到多个版本号的字眼例如以下: ASP.NET ...

  3. springMVC出现HTTP Status 405 - Request method 'GET' not supported错误的解决方法

    今天在写一个简单的springMVC的表单请求处理时,出现了这个问题.我的form表单用的是post方法提交,并没有使用get方法,出现这个问题时,笔者可谓是一脸懵逼. 这是form表单: 这是对po ...

  4. Java泛型解析(02):通配符限定

    Java泛型解析(02):通配符限定      考虑一个这种场景.计算数组中的最大元素. [code01] public class ArrayUtil { public static <T&g ...

  5. asp.net webform中的ext.net使用

    ext.net是对ext.js进行封装的net控件库,能够砸webform 和mvc中使用,从今天器我会对这一年多的ext.net开发进行一些对应的总结. 首先针对ext.net进行引用: <% ...

  6. NOIP模拟 run - 双向链表

    题目大意: 企鹅国正在举办全面运动会,第一项比赛就是跑步.N 个人在圆形跑道上跑步,他们都有各自的速度和起点.但这个跑步规则很奇怪,当两个人相遇的时候编号较小的就会出局,当场上剩下最后一个人的时候跑步 ...

  7. hello.c内核模块编译 -- linux内核

    Linux开发模块,在本机上看调试信息的方法走通了.当前版本号2.6.32-32-generic uname –r 能够查询 这里取module_param()作为样例. 该宏被定义在include/ ...

  8. MySQL分区表使用方法

    原文:MySQL分区表使用方法 1. 确认MySQL服务器是否支持分区表 命令: show plugins; 2. MySQL分区表的特点 在逻辑上为一个表,在物理上存储在多个文件中 HASH分区(H ...

  9. Vue 兄弟组件之间传递数值

    Vue 兄弟组件之间传值 创建一个公用文件夹,在文件夹中设置一个事件处理中心,即 然后在需要设置值的组件中引入该事件处理中心 import Hub from '../../common/eventHu ...

  10. 深度神经网络(DNN)

    深度神经网络(DNN) 深度神经网络(Deep Neural Networks, 以下简称DNN)是深度学习的基础,而要理解DNN,首先我们要理解DNN模型,下面我们就对DNN的模型与前向传播算法做一 ...