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

        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,优化(或丑化)了部分界面,欢迎来涨姿势。

涨姿势UWP源码——IsolatedStorage的更多相关文章

  1. [UWP]涨姿势UWP源码——IsolatedStorage

    前一篇涨姿势UWP源码分析从数据源着手,解释了RSS feed的获取和解析,本篇则会就数据源的保存和读取进行举例. 和之前的Windows Runtime一样,UWP采用IsolatedStorage ...

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

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

  3. [UWP]涨姿势UWP源码——RSS feed的获取和解析

    本篇开始具体分析涨姿势UWP这个APP的代码,首先从数据的源头着手,即RSS feed的获取和解析,相关的类为RssReader,所有和数据相关的操作均放在里面. 涨姿势网站提供的RSS feed地址 ...

  4. [UWP]涨姿势UWP源码——极简的RSS阅读器

    涨姿势UWP,一个开源的RSS阅读器,一个纯粹的项目,一个有道德的APP,一个脱离了低级趣味的作者,一些有益于人民的代码.骚年,还等什么,来涨点姿势吧! 该项目代码可能会引起部分人群的不适,敏感人群请 ...

  5. [UWP]涨姿势UWP源码——UI布局

    懒癌晚期兼正月里都是过年,一直拖到今天才继续更新.之前的几篇介绍了数据的来源,属于准备工作.本篇我们正式开始构建涨姿势UWP程序的UI界面. 我们这个Hello World程序比较简单,总共只有一个页 ...

  6. [UWP]涨姿势UWP源码——适配电脑和手机

    上一篇我们介绍了绘制主界面的MainPage.xaml,本篇则会结合MainPage.xaml.cs来讲一讲如何适配电脑和手机这些不同尺寸的设备. 同时适配电脑和手机存在几个麻烦的地方: 屏幕尺寸差距 ...

  7. UWP源码——Unit Test

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

  8. 最美时光第三方UWP源码公开

    自己大概写了一个星期的成果.. 使用了官方最美时光app的UI和图片资源,并没有调用官方接口 https://files.cnblogs.com/files/loyieking/NiceCountDo ...

  9. 【完全开源】知乎日报UWP版(下篇):商店APP、github源码、功能说明。Windows APP 良心出品。

    目录 说明 功能 截图+视频 关于源码和声明 说明 陆陆续续大概花了一个月的时间,APP算是基本完成了.12月份一直在外出差,在出差期间进行了两次功能完善,然后断断续续修补了一些bug,到目前为止,我 ...

随机推荐

  1. C语言-二进制技巧

    打开位: flags = flags | MASK 要打开的位为 1 关闭位: flags = flags & ~MASK 要关闭的位为 1 转置位: flags = flags ^ MASK ...

  2. Android webView 支持缩放及自适应屏幕

    //支持javascript web.getSettings().setJavaScriptEnabled(true);  // 设置可以支持缩放  web.getSettings().setSupp ...

  3. Linux 压缩文件的命令行总结

    Linux压缩文件的读取 ·    *.Z       compress 程序压缩的档案: ·    *.bz2     bzip2 程序压缩的档案: ·    *.gz      gzip 程序压缩 ...

  4. json再理解

    一.Json的简单介绍 从结构上看,所有的数据最终都可以分成三种类型: 第一种类型是scalar(标量),也就是一个单独的string(字符串)或数字(numbers),比如“北京”这个单独的词. 第 ...

  5. JSP应用开发 -------- 电纸书(未完待续)

    http://www.educity.cn/jiaocheng/j9415.html JSP程序员常用的技术   第1章 JSP及其相关技术导航 [本章专家知识导学] JSP是一种编程语言,也是一种动 ...

  6. 2. Retrofit2 -- Basic Authentication on Android

    2. Retrofit2 -- Basic Authentication on Android android Retrofit tutorial 整合基本的认证 Retrofit 1.9 Retro ...

  7. 初识layer遮罩层

    背景:楼主做了一个先删除数据再插入的功能,但是狂点菜单的时候会有重复数据插入进来,设置字段unique之后,再狂点,控制台也会报错. 为了防止这种问题出现,我采取了制止”狂点“这种行为出现的做法,所以 ...

  8. PHP从千千静听服务器获取lrc歌词

    <?php //转载请注明出处 uenucom function SingleDecToHex($dec)  {  $tmp="";  $dec=$dec%16;  if($ ...

  9. CAP定理(原则)以及BASE理论

    CAP定理(原则)以及BASE理论 CAP定理(原则)概念 CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partiti ...

  10. 破解idea注册码

    添加 “0.0.0.0 account.jetbrains.com”到host, hosts位置:C:\Windows\System32\drivers\etc 获取注册码网址: http://ide ...