原文:UWP入门(九)-- 枚举和查询文件和文件夹

核心 API 所在的命名空间:

  • Windows.Storage
  • Windows.Storage.Streams
  • Windows.Storage.Pickers

用它们三可以实现在文件中读取和写入文本和其他数据格式管理文件和文件夹

本文例子都是官方文档中的示例,只是里面代码对菜鸟不友好,我重新整理下。本文 github代码

1. GetFoldersAsync

首先使用 StorageFolder.GetFilesAsync 方法获取 PicturesLibrary 的根文件夹(而不是在子文件夹,就是一打开里面所有的当前文件)中的所有文件,并列出每个文件的名称。 接下来,我们使用 GetFoldersAsync 方法获取 PicturesLibrary 中的所有子文件夹并列出每个子文件夹的名称

注意:先在项目里的 Package.appxmanifest 处声明权限

            StorageFolder picturesFolder = KnownFolders.PicturesLibrary;
StringBuilder outputText = new StringBuilder(); IReadOnlyList<StorageFile> fileList = await picturesFolder.GetFilesAsync();
outputText.AppendLine("Files:"); foreach (StorageFile file in fileList)
{
outputText.Append(file.Name + "\n");
} IReadOnlyList<StorageFolder> folderList = await picturesFolder.GetFoldersAsync();
outputText.AppendLine("Folders:"); foreach (StorageFolder folder in folderList)
{
outputText.Append(folder.DisplayName + "\n");
}
//Debug.WriteLine(outputText.ToString()+"");
MyText.Text = outputText.ToString() + "";

上面代码中图片路径位于:

运行结果:

之前路径显示的,现在路径为什么不显示,我也很迷惑

2. 使用 GetItemsAsync 方法获取某个特定位置中的所有项(文件和子文件夹)

使用 GetItemsAsync 方法获取某个特定位置中的所有项(文件和子文件夹)。 以下示例使用 GetItemsAsync 方法获取 PicturesLibrary 的根文件夹(而不是在子文件夹)中的所有文件和子文件夹。 然后,该示例会列出每个文件和子文件夹的名称。 如果该项是子文件夹,则该示例会向该名称追加 “folder”

private async void Button_Click2(object sender, RoutedEventArgs e)
{
StorageFolder picturesFolder = KnownFolders.PicturesLibrary;
StringBuilder outputText = new StringBuilder(); IReadOnlyList<IStorageItem> itemsList = await picturesFolder.GetItemsAsync(); foreach (var item in itemsList)
{
if (item is StorageFolder)
{
outputText.Append(item.Name + " folder\n"); }
else
{
outputText.Append(item.Name + "\n"); }
}
MyText.Text = outputText.ToString() + "\nPath:==" + picturesFolder.Path;
}

结果:

3. 查询某个位置中的文件并枚举匹配的文件

在此示例中,我们查询按月分组的 PicturesLibrary 中的所有文件,此时该示例会递归到子文件夹

  • 首先,我们调用 StorageFolder.CreateFolderQuery 并将 CommonFolderQuery.GroupByMonth 值传递给该方法。 这向我们提供了一个 StorageFolderQueryResult 对象

  • 接下来,我们调用 StorageFolderQueryResult.GetFoldersAsync,它将返回表示虚拟文件夹的 StorageFolder 对象。 在此示例中,我们按月分组,因此每个虚拟文件夹都表示一组具有相同月份的文件

StorageFolder picturesFolder = KnownFolders.PicturesLibrary;

            StorageFolderQueryResult queryResult = picturesFolder.CreateFolderQuery(CommonFolderQuery.GroupByMonth);

            IReadOnlyList<StorageFolder> folderList = await queryResult.GetFoldersAsync();

            StringBuilder outputText = new StringBuilder();

            foreach (StorageFolder folder in folderList)
{
IReadOnlyList<StorageFile> fileList = await folder.GetFilesAsync(); // Print the month and number of files in this group.
outputText.AppendLine(folder.Name + " (" + fileList.Count + ")"); foreach (StorageFile file in fileList)
{
// Print the name of the file.
outputText.AppendLine(" " + file.Name);
}
}
MyText.Text = outputText.ToString() + "\nPath:==" + picturesFolder.Path;

结果:

UWP入门(九)-- 枚举和查询文件和文件夹的更多相关文章

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

    原文:UWP入门(十一)--使用选取器打开文件和文件夹 很漂亮的功能,很有趣 重要的 API FileOpenPicker FolderPicker StorageFile 通过让用户与选取器交互来访 ...

  2. UWP入门(十)--创建、写入和读取文件

    原文:UWP入门(十)--创建.写入和读取文件 核心的 API github代码 StorageFolder 类 StorageFile 类 FileIO 类 使用 StorageFile 对象读取和 ...

  3. UWP入门(十)--获取文件属性

    原文:UWP入门(十)--获取文件属性 重要的 API StorageFile.GetBasicPropertiesAsync StorageFile.Properties StorageItemCo ...

  4. UWP 入门教程2——如何实现自适应用户界面

    系列文章 UWP入门教程1——UWP的前世今生 如上文所说的,布局面板根据可用的屏幕空间,指定界面元素的大小和位置.例如StackPanel 会水平或垂直排列界面元素.Grid 布局与CSS 中的表格 ...

  5. 网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?

    1.前言 标题虽然是为了解释有了 IP 地址,为什么还要用 MAC 地址,但是本文的重点在于理解为什么要有 IP 这样的东西.本文对读者的定位是知道 MAC 地址是什么,IP 地址是什么. (本文同步 ...

  6. MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询

    MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...

  7. MyBatis基础入门《八》查询参数传入Map

    MyBatis基础入门<八>查询参数传入Map 描述: 在执行select查询数据的时候,方法传入的参数是java.util.Map类型. 接口方法: xml文件 注意: 书写SQL语句的 ...

  8. MyBatis基础入门《七》查询参数传入对象

    MyBatis基础入门<七>查询参数传入对象 描述: 在执行查询语句的时候,传入的参数是一个对象,依据对象的属性,进行检索数据.此时,书写SQL语句中的条件时,其参数需要和对象中的属性保持 ...

  9. ComicEnhancerPro 系列教程十九:用JpegQuality看JPG文件的压缩参数

    作者:马健邮箱:stronghorse_mj@hotmail.com 主页:http://www.comicer.com/stronghorse/ 发布:2017.07.23 教程十九:用JpegQu ...

随机推荐

  1. 【codeforces 765C】Table Tennis Game 2

    [题目链接]:http://codeforces.com/contest/765/problem/C [题意] 枚举游戏先拿到k分的人胜; 然后两个人一个人得了a分,一个人得了b分; 问你最多可能进行 ...

  2. javaScript实现图片滚动及一个普通图片轮播的代码

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. HDU 5317 RGCDQ(素数个数 多校2015啊)

    题目链接:pid=5317" target="_blank">http://acm.hdu.edu.cn/showproblem.php?pid=5317 Prob ...

  4. T-SQL部分函数(转)

    函数类别 作用 聚合函数 执行的操作是将多个值合并为一个值.例如 COUNT.SUM.MIN 和 MAX. 配置函数 是一种标量函数,可返回有关配置设置的信息. 转换函数 将值从一种数据类型转换为另一 ...

  5. 每天一个JavaScript实例-铺货鼠标点击位置并将元素移动到该位置

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  6. hbase 2.0.2 分布式安装配置/jar包替换

    环境 zk: 3.4.10 hadoop 2.7.7 jdk8 hbase 2.0.2 三台已安装配置好的hadoop002,hadoop003,hadoop004 1.上传并解压hbase-2.1. ...

  7. Linux-shell脚本-mysql一键安装

    转自: https://blog.csdn.net/zmken497300/article/details/51615678 安装环境 CentOS-7-x86_64-DVD-1511.iso mys ...

  8. Canvas,Matrix的变换顺序

    Canvas的几何变换是倒序的,Matrix是正序. 比如先平移在旋转: canvas.rotate(); canvas.translate(); //translate先执行,rotate后执行 M ...

  9. 【codeforces 534A】Exam

    [题目链接]:http://codeforces.com/contest/534/problem/A [题意] 给你n个人,要求任意两个编号相邻的人不能相邻; 让你安排座位方案,使得最多人的可以入座 ...

  10. 一个2013届毕业生(踏上IT行业)的迷茫(3)

    高中,是校园题材中出现最多的角色,但我的高中缺非常灰淡.我上的高中在我们镇上,记得在上小学的时候我哥在高中,我每次从学校门口过的时候都感觉高中好大,门口好漂亮,但是我从来都没敢进去.就在2006年我以 ...