zoukankan      html  css  js  c++  java
  • Windows 8 应用商店应用开发 之 用户库操作(2)用户库文件夹操作

     用户库文件夹操作

    上面介绍了与用户库文件有关的操作,包括创建、读写等,下面将介绍与用户库文件夹相关的操作。

    与文件操作一样,想要对用户库文件夹进行操作,需要首先获取用户库的相应位置,获取的方法上面已经介绍过了,这里不再赘述,在获取到相应的位置后,可以使用异步方法CreateFolderAsync在其中建立文件夹,示例代码如下所示:

        //获取一个代表文档库的文件夹对象

    StorageFolder folders = KnownFolders.DocumentsLibrary;

    //创建一个子文件夹,并为其命名为“hello

    StorageFolder folder = await folders.CreateFolderAsync("hello");

    创建文件夹时,也可以通过使用上面介绍过的CreationCollisionOption枚举,指定如果存在同名文件夹时执行的操作,示例代码如下所示:

    //获取一个代表文档库的文件夹

    StorageFolder folders = KnownFolders.DocumentsLibrary;

    //创建一个子文件夹,并为其命名为“hello

    StorageFolder subFolder = await folders.CreateFolderAsync("hello",CreationCollisionOption.ReplaceExisting);

    代码中使用的就是CreationCollisionOption枚举的ReplaceExisting成员,表示如果存在同名文件夹创建新文件夹时会将其替换。另外,如果想要删除文件夹,可以通过DeleteAsync方法实现,示例代码如下所示:

    //删除subFolder

    await subFolder.DeleteAsync();

    通过上面的介绍,读者已经了解了文件以及文件夹的相关操作,下面将进一步讲解如何获取文件和文件夹列表。

    获取文件及文件夹列表

    通过使用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 + "\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中。

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

     

    注:本文选自机械工业出版社3月出品的《Windows 8 应用开发权威指南》第12章 文件与数据存储

    4月27日的微软云体验营活动非常成功,感谢大家的到来。

     

     

  • 相关阅读:
    编程ING:人人都能学会程序设计
    以拯救之因
    使用交互环境
    使用交互环境 连载3
    深入理解Oracle Exadata
    字符编码
    多语境的操作
    挖掘用户需求
    神一样的产品经理——基于移动与互联网产品实践
    产品各类型之间的关系
  • 原文地址:https://www.cnblogs.com/finehappy/p/3049593.html
Copyright © 2011-2022 走看看