通过使用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. Silverlight TreeView 动态绑定Xml 文件

      随着应用程序的不断升级,客户的需求不断增多,程序员不得不对自己的应用程序做出相应的修改,如果修改的内容较多,那么就必须找出一种简便方法,下面就为大家介绍一下在SilverLight 中左边导航栏T ...

  2. collectionView,tableView的细节处理

    1.设置collectionView的高度 1.1为什么要设置高度? collectionView是在tableView的footView里面 , tableView能滚动,collectionVie ...

  3. java 静态函数锁对象说明

    在内存加载.class文件后,会自动创建一个对象,用于保存class的信息,与我们程序员手工创建的对象不一样.

  4. Css Study - 纵向Menu - By html and Css

    http://www.wikihow.com/Create-a-Dropdown-Menu-in-HTML-and-CSS HTML <div id="leftmenu"&g ...

  5. JAVA线程同步辅助类CountDownLatch

    一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 用给定的计数 初始化 CountDownLatch.由于调用了 countDown() 方法,所以在当前计数到达 ...

  6. QT笔记之VS开发添加类

    1. 2. 3.

  7. [问题2015S07] 复旦高等代数 II(14级)每周一题(第八教学周)

    [问题2015S07]  设 \(A\) 为 \(n\) 阶复方阵, 证明: 存在 \(n\) 阶非异复对称阵 \(S\), 使得 \(A'=S^{-1}AS\), 即 \(A\) 可通过非异复对称阵 ...

  8. php实战正则表达式:验证手机号

    摘自http://www.tuicool.com/articles/MFNZRzu 本文通过逐步完善一个验证手机号的正则表达式来介绍了正则表达式中的 字符组 .量词 . 字符串起始/结束位置 . 分组 ...

  9. java实现LIS算法,出操队形问题

    假设有序列:2,1,3,5,求一个最长上升子序列就是2,3,5或者1,3,5,长度都为3. LIS算法的思想是: 设存在序列a. ① 如果只有一个元素,那么最长上升子序列的长度为1: ② 如果有两个元 ...

  10. eventloop & actor模式 & Java线程模型演进 & Netty线程模型 总结

    eventloop的基本概念可以参考:http://www.ruanyifeng.com/blog/2013/10/event_loop.html Eventloop指的是独立于主线程的一条线程,专门 ...