天天看點

Windows Store App 擷取檔案及檔案夾清單

通過使用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類型的對象,包括所有的檔案和檔案夾。示例代碼如下所示:

//擷取到檔案和檔案夾的清單,将其存入隻讀集合中

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方法。

繼續閱讀