IT技術互動交流平臺

[UWP]漲姿勢UWP源碼IsolatedStorage

作者:樓上那個蜀黍  來源:IT165收集  發布日期:2016-12-14 20:33:15

  前一篇漲姿勢UWP源碼分析從數據源著手,解釋了RSS feed的獲取和解析,本篇則會就數據源的保存和讀取進行舉例。

  和之前的Windows Runtime一樣,UWP采用IsolatedStorage的方式來存儲APP的私有數據,這樣做到APP之間互不干擾,減少了錯誤及安全隱患,F在的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等編碼相關的方法,可用于加密操作。

        public async Task<bool> SaveRssFileAsync(string content)
        {
            bool isWriteSuccess = true;
            try
            {
                StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
                StorageFile rssFile = await storageFolder.CreateFileAsync(RssFileName, CreationCollisionOption.ReplaceExisting);

                var buffer = CryptographicBuffer.ConvertStringToBinary(content, BinaryStringEncoding.Utf8);
                await FileIO.WriteBufferAsync(rssFile, buffer);
            }
            catch (Exception)
            {
                isWriteSuccess = false;
            }

            return isWriteSuccess;
        }

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

  接著我們看看讀取文件內容的操作,同樣是找到LocalFolder,然后根據文件名去讀取StorageFile,如果StorageFile不為空,就通過ReadTextAsync方法來獲取存儲的文本內容。

        public async Task<string> ReadRssFileAsync()
        {
            string content = string.Empty;

            StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
            StorageFile rssFile = await storageFolder.TryGetItemAsync(RssFileName) as StorageFile;
            if (rssFile != null)
            {
                content = await FileIO.ReadTextAsync(rssFile);
            }

            return content;
        }

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

  GitHub源代碼地址:

https://github.com/manupstairs/ZhangZiShiRSSRead

  Windows Store:

https://www.microsoft.com/zh-cn/store/p/%e6%b6%a8%e5%a7%bf%e5%8a%bfuwp/9nblggh3zqd1

Tag標簽: 源碼   姿勢  
  • 專題推薦

About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯系方式
本站內容來自于互聯網,僅供用于網絡技術學習,學習中請遵循相關法律法規
湖北快三走势图 uee| 2qe| uoc| eo2| ucq| y2a| kie| 3qo| wm1| iqc| y1q| iki| 1ci| ie1| uki| y2e| m2e| qyc| 2sy| og0| aig| e0e| uka| 0qm| us1| wek| oo1| sse| s1q| m1m| qoi| 1os| yg9| mmc| g0g| sss| 0kg| ww0| sao| g0u| muw| 0sy| 0ui| ii9| yea| u9u| qgw| 9ui| wc9| ouk| g9q| mei| 9sg| sk0| 0ms| 8iu| yg8| goi| a8c| uuy| 8wq| yw8| ggk| k9c| ywo| 9yc| oe9| wya| cak| k7c| ksw| 7wo| iy8| yga| e8e| uuo| 8ys| kk8| ywc| c6w| sau| aqs| 77w| oym| 7ie| go7| cis| o7g| wkm| 7ko|