天天看點

[UWP]漲姿勢UWP源碼——IsolatedStorage

  前一篇漲姿勢UWP源碼分析從資料源着手,解釋了RSS feed的擷取和解析,本篇則會就資料源的儲存和讀取進行舉例。

  和之前的Windows Runtime一樣,UWP采用IsolatedStorage的方式來存儲APP的私有資料,這樣做到APP之間互不幹擾,減少了錯誤及安全隐患。現在的Application的設計似乎都流行這個做法。

  UWP中對應用程式資料存儲區的通路,通常使用ApplicationData這個類來操作,我們把最常用的一些屬性列出:

屬性和方法

用途

public StorageFolder LocalFolder { get; }

擷取本地應用程式資料存儲區中的根檔案夾。

public ApplicationDataContainer LocalSettings { get; }

擷取本地應用程式資料存儲區中的應用程式設定容器。

public StorageFolder RoamingFolder { get; }

擷取漫遊應用程式資料存儲區中的根檔案夾。

public ApplicationDataContainer RoamingSettings { get; }

擷取漫遊應用程式資料存儲區中的應用程式設定容器。

public IAsyncAction ClearAsync();

删除本地、漫遊以及臨時應用程式資料存儲區中的所有應用程式資料。

  具體在漲姿勢UWP中,首先通過ApplicationData.Current.LocalFolder拿到目前APP對應存儲空間的根檔案夾,然後通過StorageFolder對象進行CreateFile操作,注意這裡選擇了CreationCollisionOption.ReplaceExisting這個枚舉,期望每次都能夠用新的RSS feed檔案覆寫已有的檔案。

  接下來需要先将需要儲存的字元串内容轉換成已編碼的buffer對象,再通過FileIO.WriteBufferAsync方法寫入之前建立好的檔案中。當然你直接FileIO.WriteTextAsync也不是不可以,CryptographicBuffer主要包含Encode,Decode等編碼相關的方法,可用于加密操作。

  UWP檔案存儲相關的類,除了上述提到的Windows.Storage命名空間下最常用的StorageFolder、StorageFile和FileIO,還有Windows.Storage.Pickers命名空間下的各類Picker,Windows.Storage.Streams命名空間下的各種buffer,steam,熟悉之後用起來還是很友善的。

  接着我們看看讀取檔案内容的操作,同樣是找到LocalFolder,然後根據檔案名去讀取StorageFile,如果StorageFile不為空,就通過ReadTextAsync方法來擷取存儲的文本内容。

  檔案的儲存和讀取大緻就是以上這些,是不是比想象的簡單多了。上周漲姿勢UWP更新了一版,修複了一些不可告人的小bug,優化(或醜化)了部分界面,歡迎來漲姿勢。

  GitHub源代碼位址:

<a href="https://github.com/manupstairs/ZhangZiShiRSSRead">https://github.com/manupstairs/ZhangZiShiRSSRead</a>

  Windows Store:

<a href="https://www.microsoft.com/zh-cn/store/p/%E6%B6%A8%E5%A7%BF%E5%8A%BFuwp/9nblggh3zqd1">https://www.microsoft.com/zh-cn/store/p/%e6%b6%a8%e5%a7%bf%e5%8a%bfuwp/9nblggh3zqd1</a>

繼續閱讀