• Windows Store App 获取文件及文件夹列表


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

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

    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 + " ");

    }

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

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

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

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

    foreach (StorageFolder folder in folderList)

    {

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

    }

    代码在获得了图片库位置之后,新建了一个可变字符串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 + " 文件夹 ");

        }

        else

    //这种情况中item是文件

        {

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

        }

    }

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

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

  • 相关阅读:
    QML中的states用法
    mako的namespace(四)
    Dynamics CRM2013 按钮自定义开发工具 Ribbon Workbench 介绍
    CRM 导入导出附件上传大小限制控制
    插件(plugin)调试技巧及注意事项
    Dynamics CRM2013 自定义开发工具 Dynamics XRM Tools 介绍
    传递正能量,拒绝负能量!加油
    让人无语的编程环境
    转NET(C#):线程本地存储(ThreadLocal Storage)之ThreadStatic, LocalDataStoreSlot和ThreadLocal<T>
    转javaThreadLocal
  • 原文地址:https://www.cnblogs.com/finehappy/p/4213378.html
Copyright © 2020-2023  润新知