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日的微軟雲體驗營活動非常成功,感謝大家的到來。

 

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com