通过使用13.2.1小节给出的方法和属性,不仅可以对用户库中的文件和文件夹进行操作,还可以获取其中所有的文件或者文件夹,比如为了完整地展现整个音乐库,可以获取并列举出音乐库中所有的音乐文件,以便能够在应用程序中浏览、查找喜爱的音乐。本节主要介绍如何获取文件和文件夹列表,因为对于音乐库、图片库等用户库来说,获取其中文件和文件夹的方法相同,所以接下来将以图片库为例进行介绍。

想要读取图片库中的文件或文件夹列表,首先需要使用上面介绍过的方法获取图片库位置,然后使用异步方法GetFilesAsync和GetFoldersAsync分别获得图片库中的所有文件和文件夹。以下是一段获得图片库中所有文件和文件夹名称的示例代码。

StorageFolder picturesFolder = KnownFolders.PicturesLibrary;

//创建一个可变字符串对象

StringBuilder outputText = new StringBuilder();

//获取到所有文件,将其存入只读类型集合中

IReadOnlyList<StorageFile> fileList = await picturesFolder.GetFilesAsync();

outputText.AppendLine("文件:");

//遍历所有文件,并将文件名添加到可变字符串中

foreach (StorageFile file in fileList)

{

    outputText.Append(file.Name + "\n");

}

//获取到所有文件夹,将其存入只读类型的集合中

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

outputText.AppendLine("文件夹:");

//遍历所有文件夹,并将文件夹名字添加到可变字符串中

foreach (StorageFolder folder in folderList)

{

    outputText.Append(folder.DisplayName + "\n");

}

代码在获得了图片库位置之后,新建了一个可变字符串outputText,并调用异步方法GetFilesAsync获取图片库中所有的文件,使用fileList集合将其保存,通过foreach循环遍历fileList,将其中保存的所有文件的名称依次添加到outputText中,然后使用GetFoldersAsync方法获得图片库中所有的文件夹,并保存到folderList集合中,接着同样使用循环将所有文件夹的名称也添加到outputText中。

上面介绍的方法是分别调用两个不同的方法来获取文件和文件夹,接下来介绍一种一次性获取到所有文件和文件夹的方法。

在获得了图片库位置之后,可以使用GetItemsAsync方法获取到其中所有IStorageItem类型的对象,包括所有的文件和文件夹。示例代码如下所示:

StorageFolder picturesFolder = KnownFolders.PicturesLibrary;

StringBuilder outputText = new StringBuilder();

//获取到文件和文件夹的列表,将其存入只读集合中

IReadOnlyList<IStorageItem> itemsList = await picturesFolder.GetItemsAsync();

foreach (var item in itemsList)

{

//判断item是不是文件夹

    if (item is StorageFolder)

    {

        outputText.Append(item.Name + " 文件夹\n");

    }

    else

//这种情况中item是文件

    {

        outputText.Append(item.Name + "\n");

    }

}

代码在获得了所有IStorageItem类型的对象并将其存入itemsList集合之后,使用foreach循环判断itemsList集合中的每一个元素是文件还是文件夹,如果是文件夹,在名称后面加上字符串“文件夹”,添加到可变字符串outputText中,如果是文件,也同样将名称添加到可变字符串outputText中。

通过以上的介绍可以了解到,可以使用GetFilesAsync或GetFoldersAsync方法来分别获取用户库中的文件或文件夹。但如果只需要了解用户库中的具体内容,而不必区分文件和文件夹,则可使用GetItemsAsync方法。

Windows Store App 获取文件及文件夹列表的更多相关文章

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

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

  2. Windows Store App 访问应用内部文件

    访问应用程序内部的文件可以使用多种不同的方法,13.1节中已经介绍过相关的方法,除此之外,还可以使用文件的URI地址直接对文件进行检索,这种访问方式需要用到StorageFile类的静态方法GetFi ...

  3. Windows store app[Part 3]:认识WinRT的异步机制

    WinRT异步机制的诞生背景 当编写一个触控应用程序时,执行一个耗时函数,并通知UI更新,我们希望所有的交互过程都可以做出快速的反应.流畅的操作感变的十分重要. 在连接外部程序接口获取数据,操作本地数 ...

  4. 在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)

    这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情 ...

  5. Windows Store App 过渡动画

    Windows Store App 过渡动画     在开发Windows应用商店应用程序时,如果希望界面元素进入或者离开屏幕时显得自然和流畅,可以为其添加过渡动画.过渡动画能够及时地提示用户屏幕所发 ...

  6. Windows store app[Part 4]:深入WinRT的异步机制

    接上篇Windows store app[Part 3]:认识WinRT的异步机制 WinRT异步机制回顾: IAsyncInfo接口:WinRT下异步功能的核心,该接口提供所有异步操作的基本功能,如 ...

  7. Windows Store App JavaScript 开发:获取文件和文件夹列表

    在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolder ...

  8. Windows Store App JavaScript 开发:选取文件和文件夹

    前面提到过,文件打开选取器由FileOpenPicker类表示,用于选取或打开文件,而文件夹选取器由FolderPicker类表示,用来选取文件夹.在FileOpenPicker类中,pickSing ...

  9. Windows Store App 用户库文件夹操作

    上面介绍了与用户库文件有关的操作,包括创建.读写等,下面将介绍与用户库文件夹相关的操作. 与文件操作一样,想要对用户库文件夹进行操作,需要首先获取用户库的相应位置,获取的方法上面已经介绍过了,这里不再 ...

随机推荐

  1. 向ES6看齐,用更好的JavaScript(三)

    本文是ES6系列的第三篇,主要介绍ES6新增的数据类型.数据结构,先上传送门: 1 变量部分 2 现有对象拓展 3 新增数据类型/数据结构 4 新的异步编程模式 5 类和模块 1 第七种数据类型Sym ...

  2. JDBC增删改查,PreparedStatement和Statement的区别

    此篇是在上一篇的基础上使用PreparedStatement对象来实现JDBC增删改查的 具体工具类JDBCTools和实现类和配置文件在上一篇Statement对象实现的时候有写. 上一篇地址htt ...

  3. csuoj 1505: 酷酷的单词

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1505 1505: 酷酷的单词 时间限制: 1 Sec  内存限制: 128 MB 提交: 340  ...

  4. SQL复制一个表的数据到另一个表

    最近做一个项目,由于客户数据量大,为了不将数据彻底删除,于是将数据移动到历史表,原始表的数据删除.由于技术有限,想不到好的方法,于是写个存储过程 执行,为了防止执行过程中出现异常,执行不完整.用到hI ...

  5. python日志模块

    许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系 统的运行状况进行跟踪.在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4c ...

  6. hash命令

    什么是hash ? 在网上找了好久都没找到简截有力的说明.hash 我把它当成是集合,一个hash 就是一个集合,里面字段对应一个元素,元素不重复,字段都不一样. 简单hash 命令 1.hset 哈 ...

  7. Tomcat常见的内存溢出,以及解决方法

    一.常见的三种内存溢出错误: 1.java.lang.OutOfMemoryError:java heap space    ====JVM Heap(堆)溢出 JVM再启动的时候回自动设置JVM H ...

  8. ubuntu常用命令记录集

    1.查找当前目录下包含某字符串的文件 #find ./ -type f |xargs grep "string" 2.查找文件 #find ./ -name filename 3. ...

  9. App.xaml.cs

    using System.Windows; namespace HelloWorld { /// <summary> /// Interaction logic for App.xaml ...

  10. 图论$\cdot$强连通分量

    和无向图的连通分量类似,有向图有“强连通分量”的说法.“相互可达”的关系在有向图中也是等价关系.每一个集合称为有向图的一个强连通分量(scc).如果把一个集合看成一个点,那么所有的scc构成了一个sc ...