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

简介: 原文:UWP入门(九)-- 枚举和查询文件和文件夹 核心 API 所在的命名空间: Windows.Storage Windows.Storage.Streams Windows.Storage.Pickers 用它们三可以实现在文件中读取和写入文本和其他数据格式并管理文件和文件夹 本文例子都是官方文档中的示例,只是里面代码对菜鸟不友好,我重新整理下。
原文: 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;

结果:
这里写图片描述

目录
相关文章
|
C# Windows
WPF 获取程序路径的一些方法,根据程序路径获取程序集信息
原文:WPF 获取程序路径的一些方法,根据程序路径获取程序集信息 一、WPF 获取程序路径的一些方法方式一 应用程序域 //获取基目录即当前工作目录 string str_1 = System.
1747 0
|
7月前
|
Windows
【Windows驱动开发】注册表的基本操作(创建、打开、修改、读取、枚举)(附源码)
【Windows驱动开发】注册表的基本操作(创建、打开、修改、读取、枚举)(附源码)
|
Web App开发
【视频】自然框架之分页控件的使用方法(二) 下载、DLL说明和web.config的设置
    上次说的是QuickPager分页控件的PostBack的使用方式,也提供了源码下载。但是有些人下载之后发现有一大堆的文件夹,还有一大堆的DLL,到底要用哪个呀?不会都要用吧。     当然不需要全都引用了,只需要引用三个DLL就可以了。
1109 0
|
XML C# 数据格式
[UWP]为附加属性和依赖属性自定义代码段(兼容UWP和WPF)
原文:[UWP]为附加属性和依赖属性自定义代码段(兼容UWP和WPF) 1. 前言 之前介绍过依赖属性和附加属性的代码段,这两个代码段我用了很多年,一直都帮了我很多。不过这两个代码段我也多年没修改过,Resharper老是提示我生成的代码可以修改,它这么有诚意,这次就只好从了它,顺便简单介绍下怎么自定义代码段。
766 0
|
C#
WPF:将Office文档、任意类型文件嵌入到EXE可执行文件中
原文:WPF:将Office文档、任意类型文件嵌入到EXE可执行文件中 版权声明:本文为博主原创文章,未经博主允许可以随意转载 https://blog.csdn.net/songqingwei1988/article/details/50259527 RT 可能这个需求比较奇怪 做了一个绿色版应用,最后只生成一个可执行的exe文件,不附带任何dll和其他文件。
1495 0
|
Android开发
UWP 查找模板中的控件
原文:UWP 查找模板中的控件 这个标题我也不知道咋起,意思说一下你就明白。 1. 对官方控件的模板进行定制修改,以满足多样化需求,还有漂亮的UI 比如ListView,GridView等。 2.
818 0
|
C#
详解WPF Blend工具中的复合路径功能 ( 含路径标记语法 )
原文:详解WPF Blend工具中的复合路径功能 ( 含路径标记语法 ) 写此文章的目的是为了简单分析一下 Blend工具中提供的"复合路径"功能.有人在我的博文中留言问我复合路径的问题.  稍微琢磨一下,觉得应该是对的.
1512 0