关闭

涨姿势UWP源码——IsolatedStorage

120人阅读 评论(0) 收藏 举报

 前一篇涨姿势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主要包含EncodeDecode等编码相关的方法,可用于加密操作。

复制代码
        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命名空间下最常用的StorageFolderStorageFileFileIO,还有Windows.Storage.Pickers命名空间下的各类PickerWindows.Storage.Streams命名空间下的各种buffersteam,熟悉之后用起来还是很方便的。

  接着我们看看读取文件内容的操作,同样是找到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,优化(或丑化)了部分界面,欢迎来涨姿势。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Win10之UWP的数据存储

我们知道通常我们开发的时候都要考虑把用户的数据存储到一个数据库里面,而这个数据库则考虑到了整个应用的性能上面,这里我们不考虑SQL server的数据库,我们考虑较为轻量的数据库进行存储。首先我们新建...
  • zhongyanfu0
  • zhongyanfu0
  • 2016-07-13 17:12
  • 1351

蜻蜓FM 涉嫌诈骗投资人和广告主源代码剖析

本文主要内容,引用自知乎的这篇文章:如何评价蜻蜓 FM 伪造用户活跃度等数据 感谢“左莫”、“任正”等热心正义的网友--左莫,任正的最早的回答猜测已经被蜻蜓FM通过创新工场关系让知乎删除了,而且...
  • zhangcanyan
  • zhangcanyan
  • 2016-05-08 22:37
  • 2235

基于深度图像的头部姿态估计

1.头部姿态       头部姿态估计通常是指利用计算机视觉和模式识别的方法在数字图像中判断人头部朝向问题[2]。更严格的说,头部姿态估计是在一个空间坐标系内识别头部的姿态参数,即头部位置参数()和方...
  • AUTO1993
  • AUTO1993
  • 2016-11-15 09:06
  • 1790

基于正玄变换的人脸姿态矫正(由正面人脸图像模拟出侧面人脸图像)

基于正玄变换的人脸姿态矫正 原理:正玄变换开始是用于快速的姿态矫正,即从有一定偏转角度的侧面图像变为正面图像。假设待识别的样本为的一张侧面人脸图像,即此人脸具有一定方向的偏转。可以看到图像显示出一边...
  • u013308233
  • u013308233
  • 2014-08-15 15:26
  • 2188

[UWP]涨姿势UWP源码—Unit Test

 之前我们讨论了涨姿势UWP的RSS数据源获取,以及作为文件存储到本地,再将数据转化成Model对象。这部分非UI的内容非常适合添加Unit Test。不涉及UI的话,UT写起来简单高效,很是值...
  • cmdos
  • cmdos
  • 2016-12-25 21:08
  • 122

android表白APP源码,以程序员的姿势备战新年后的7夕

  • 2016-01-22 12:41
  • 19.96MB
  • 下载

uwp开发-demoHelloworld源码

  • 2015-09-21 09:59
  • 19.38MB
  • 下载

Windows UWP微软源码(代码参考大全)

  • 2017-08-26 22:40
  • 26.09MB
  • 下载

UWP 发送邮件源码

  • 2017-02-19 10:25
  • 3.73MB
  • 下载

知乎日报UWP源码

  • 2016-01-18 11:32
  • 3.47MB
  • 下载
    个人资料
    • 访问:23128次
    • 积分:890
    • 等级:
    • 排名:千里之外
    • 原创:66篇
    • 转载:17篇
    • 译文:0篇
    • 评论:0条
    文章存档