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

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的更多相关文章
- [UWP]涨姿势UWP源码——IsolatedStorage
前一篇涨姿势UWP源码分析从数据源着手,解释了RSS feed的获取和解析,本篇则会就数据源的保存和读取进行举例. 和之前的Windows Runtime一样,UWP采用IsolatedStorage ...
- [UWP]涨姿势UWP源码——Unit Test
之前我们讨论了涨姿势UWP的RSS数据源获取,以及作为文件存储到本地,再将数据转化成Model对象.这部分非UI的内容非常适合添加Unit Test.不涉及UI的话,UT写起来简单高效,很是值得投入一 ...
- [UWP]涨姿势UWP源码——RSS feed的获取和解析
本篇开始具体分析涨姿势UWP这个APP的代码,首先从数据的源头着手,即RSS feed的获取和解析,相关的类为RssReader,所有和数据相关的操作均放在里面. 涨姿势网站提供的RSS feed地址 ...
- [UWP]涨姿势UWP源码——极简的RSS阅读器
涨姿势UWP,一个开源的RSS阅读器,一个纯粹的项目,一个有道德的APP,一个脱离了低级趣味的作者,一些有益于人民的代码.骚年,还等什么,来涨点姿势吧! 该项目代码可能会引起部分人群的不适,敏感人群请 ...
- [UWP]涨姿势UWP源码——UI布局
懒癌晚期兼正月里都是过年,一直拖到今天才继续更新.之前的几篇介绍了数据的来源,属于准备工作.本篇我们正式开始构建涨姿势UWP程序的UI界面. 我们这个Hello World程序比较简单,总共只有一个页 ...
- [UWP]涨姿势UWP源码——适配电脑和手机
上一篇我们介绍了绘制主界面的MainPage.xaml,本篇则会结合MainPage.xaml.cs来讲一讲如何适配电脑和手机这些不同尺寸的设备. 同时适配电脑和手机存在几个麻烦的地方: 屏幕尺寸差距 ...
- UWP源码——Unit Test
之前我们讨论了涨姿势UWP的RSS数据源获取,以及作为文件存储到本地,再将数据转化成Model对象.这部分非UI的内容非常适合添加Unit Test.不涉及UI的话,UT写起来简单高效,很是值得投入一 ...
- 最美时光第三方UWP源码公开
自己大概写了一个星期的成果.. 使用了官方最美时光app的UI和图片资源,并没有调用官方接口 https://files.cnblogs.com/files/loyieking/NiceCountDo ...
- 【完全开源】知乎日报UWP版(下篇):商店APP、github源码、功能说明。Windows APP 良心出品。
目录 说明 功能 截图+视频 关于源码和声明 说明 陆陆续续大概花了一个月的时间,APP算是基本完成了.12月份一直在外出差,在出差期间进行了两次功能完善,然后断断续续修补了一些bug,到目前为止,我 ...
随机推荐
- [转]SIGHUP与终端控制
SIGHUP信号与控制终端 UNIX中进程组织结构为 session (会话)包含一个前台进程组及一个或多个后台进程组,一个进程组包含多个进程.一个session可能会有一个session首进程, ...
- Layui 弹出层组件——layer
layer是作为Layui[经典模块化前端框架]的一个弹层模块,由于其用户基数较大,所以把layer作为独立组件来维护. 基础参数: 基础参数主要指调用方法时用到的配置项,如:layer.open({ ...
- html5-表单常见操作
<form autocompelate="on" id="from1"><!--常用属性-->邮件:<input type=&q ...
- unity,set ugui rectTransform anchor by script
如果想用代码实现与下面面板相同的功能 试验可知改变上面选项下面四个值也随之变化: 所以说明二者是一回事儿. 因此,只要通过代码修改RectTransform的anchorMax和anchorMin成员 ...
- 纯CSS3实现一个旋转的3D立方体盒子
简单介绍 上网易前端微专业课程,里面有一个课外作业是实现一个3D旋转立方体.花了点时间做了下.还有点意思.写个简单教程.供大家学习. 先放上终于要实现的效果 注:代码在chrome 43.0.2357 ...
- 关于Unity实现游戏录制功能的思考
录制无非两种做法,录制操作和录制行为. 录制操作要考虑到随机行为,但其实也可以两者混合.如果随机行为过多,并且随机行为无法用种子复现,可以完全用录制的方式 最后再统一压缩 这里yy的就是录制行为的做法 ...
- 设置phpcms v9黄页模块作为首页方法
如果我们根据需要,想把黄页作为单独的网站,我们可以用模块化安装,并且首页设置,那么仿站网就说说详细的步骤.首先,我们需要安装最新版本的phpcms V9其次,下载黄页模块,然后进行根目录的替换.再次, ...
- makefile之变量
1 变量的定义 A variable is a name defined in a makefile to represent a string of text, called the variabl ...
- PLINK pca
#coding:utf-8 __author__ = 'similarface' import os import pandas as pd import matplotlib.pyplot as p ...
- wordpress之备份与恢复数据
备份:mysqldump -u root -p wordpress > "d:/wordpress.sql" 恢复:mysql -u root -p < "c ...