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

和之前的 Windows Runtime 一样, UWP 采用 IsolatedStorage 的方式来存储 APP 的私有数据,这样做到 APP 之间互不干扰,减少了错误及安全隐患。现在的 Application 的设计似乎都流行这个做法。

UWP 对应用程序数据存储区的访问 ,通常使用 ApplicationData 这个类来操作,我们把最常用的一些属性列出:

具体在涨姿势 UWP 中,首先通过 ApplicationData.Current.LocalFolder 拿到当前 APP 对应存储空间的根文件夹,然后通过 StorageFolder 对象进行 CreateFile 操作,注意这里选择了 CreationCollisionOption.ReplaceExisting 这个枚举,期望每次都能够用新的 RSS feed 文件覆盖已有的文件。

接下来需要先将需要保存的字符串内容转换成已编码的 buffer 对象,再通过 FileIO.WriteBufferAsync 方法写入之前创建好的文件中。当然你直接 FileIO.WriteTextAsync 也不是不可以, CryptographicBuffer 主要 包含Encode Decode 等编码相关的方法,可用于加密操作。

UWP 文件存储相关的类,除了上述提到的 Windows.Storage 命名空间下最常用的 StorageFolder StorageFile FileIO ,还有 Windows.Storage.Pickers 命名空间下的各类 Picker Windows.Storage.Streams 命名空间下的各种 buffer steam ,熟悉之后用起来还是很方便的。

接着我们看看读取文件内容的操作,同样是找到 LocalFolder ,然后根据文件名去读取 StorageFile ,如果 StorageFile 不为空,就通过 ReadTextAsync 方法来获取存储的文本内容。

文件的保存和读取大致就是以上这些,是不是比想象的简单多了。上周涨姿势 UWP 更新了一版,修复了一些不可告人的小 bug ,优化(或丑化)了部分界面,欢迎来涨姿势。