原文: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. 【hdu 2176】取(m堆)石子游戏

    Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...

  2. 菜鸟学习Spring——60s利用JoinPoint获取參数的值和方法名称

    一.概述 AOP的实现方法在上两篇博客中已经用了两种方法来实现如今的问题来了尽管我们利用AOP,那么client怎样信息传递?利用JoinPoint接口来实现client给详细实现类的传递參数. 二. ...

  3. Oracle数据库零散知识02

    15,函数的创建,要求必须有返回值,必须在语句中调用,需要多个返回值时,使用out参数类型,在user_procedures表中查询属性,在user_source表中查询源代码,创建示例: CREAT ...

  4. 使用python抓取CSDN关注人的全部公布的文章

    # -*- coding: utf-8 -*- """ @author: jiangfuqiang """ import re import ...

  5. selenium + firefox登录空间

    在网上看到的大部分都是Python版本的,于是写了个java版本的 环境: selenium-java 3.9.1 firefox 57.0 geckodriver 0.19.1 firefox与ge ...

  6. 在CSDN博客中添加量子恒道统计功能的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 什么是量子恒道统计?量子恒道统计是一套免费的网站流量统计分析系统.致力于为所有个人站长.个人博主.所有网站管理者.第三 ...

  7. ASP.NET获取web应用程序的路径

    服务器磁盘上的物理路径: HttPRuntime.AppDomainAppPath虚拟程序路径: HttpRuntime.AppDomainAppVirtualPath 任何于Request/Http ...

  8. C# 获取Windows系统:Cpu使用率,内存使用率,Mac地址,磁盘使用率

    一.获取CPU使用率: #region 获取CPU使用率         #region AIP声明          [DllImport("IpHlpApi.dll")]   ...

  9. Android开发中如何加载API源码帮助开发

    在eclipse中添加android源码既可以帮助我们的开发,又能使我们边开发边学习. android环境的搭建:http://blog.csdn.net/dawanganban/article/de ...

  10. jieba(结巴)—— Python 中文分词

    学术界著名的分词器: 中科院的 ICTCLAS,代码并不十分好读 哈工大的 ltp, 东北大学的 NIU Parser, 另外,中文 NLP 和英文 NLP 不太一致的地方还在于,中文首先需要分词,针 ...