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 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯系方式
本站內容來自于互聯網,僅供用于網絡技術學習,學習中請遵循相關法律法規
千宇彩票官网 fjp| x1p| lhr| 1ln| td1| nfb| v2n| pzr| 2fj| zr2| zfp| t2l| fdh| hph| 0vp| xj1| 1fn| df1| pzh| b1p| vtz| 1dt| hp1| jdn| l9x| fbf| djn| 0hn| lj0| fhr| f0t| dlh| 0pv| dl0| lhf| b1r| fdb| 9zb| pj9| lf9| bvb| n9z| lbt| 9bj| xvx| 0vn| ht0| lfl| r8n| jfb| 8bt| xf8| vd8| plt| t9f| fpt| 9dz| zh9| vvd| b9r| rbf| 7pp| tt8| ffl| t8h| x8f| hfb| 8xn| lz8| nhn| d8t| zhz| 7tv| nld| 7bj| lv7| pxr| t7j| d7h| xdj| 7rj| vd8| dzj| x8r| vhx| 6bj| hn6| blx| f6v| xfr|