一、理论

1、App的各种数据在WP哪里的?

下图很好介绍了这个问题。有InstalltionFolder, knownFolder, SD Card...

2、一个App的数据存储概览

主要分两大部分,InstallationFolder和App Data Folder

3、Windows.Storage.ApplicationData  和  Windows.Security.Credentials简述

其中利用Windows.Storage.ApplicationData,我们可以获得3种不同的wp中文件夹和2种设置保存字典,C#操作如下

 Windows.Storage.StorageFolder roam = Windows.Storage.ApplicationData.Current.RoamingFolder;
Windows.Storage.StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFolder temp = Windows.Storage.ApplicationData.Current.TemporaryFolder; Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;

二、Local Folder 和 Local Setting

1、LocalSetting使用,C#代码如下:

// Create a simple setting
localSettings.Values["exampleSetting"] = "Hello Windows"; // Read data from a simple setting
Object value = localSettings.Values["exampleSetting"]; if (value == null)
{
// No data
}
else
{
// Access data in value
} // Delete a simple setting
localSettings.Values.Remove("exampleSetting");

2、LocalFolder使用,C#代码如下:

  private async void writeTextToLocalStorageFile(string filename, string text)
{
var fold = Windows.Storage.ApplicationData.Current.LocalFolder;//打开文件夹
StorageFile file = await fold.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);//创建个文件
await FileIO.WriteTextAsync(file, text);//在文件里面写内容
} private async Task<string> readTextFromLocalStorage(string filename)
{
var fold = Windows.Storage.ApplicationData.Current.LocalFolder;//打开文件夹
StorageFile file = await fold.GetFileAsync(filename);//打开对应的文件
string result = await FileIO.ReadTextAsync(file);//读取文件里面的内容
return result;
}

Note:这里对文件的操作是十分简单的,步骤是在电脑管理文件的步骤是类似的。

三、Roaming Setting 和Roaming Folder

如果用户在多个设备上安装了你的程序,如果所有的设备可以共享相同的设置信息是很好的体验。而Roaming data提供了一个应用程序可以在多个不同的物理设备同步数据和设置方法。它以一个文件夹和设置字典的形式自动存储在用户的OneDrive。Roaming data的大小限制于ApplicationData.RoamingStorageQuota(一般是100k左右,但它不会占用你Onedrive的空间大小)。其同步过程图如下:

  Roaming Setting 和Roaming Folder的操作方式与上面的Local Folder 和 Local Setting操作方式一样,在这不一一介绍。但是需要在不同设备中监视Roaming data的改变事件。C#代码如下:

Windows.Storage.ApplicationData.Current.DataChanged += Current_DataChanged;
... void Current_DataChanged(ApplicationData sender, object args)
{
// Refresh your settings...
}

  数据的同步是发生在后台的。

四、几种不同方式获取文件的方式

wp8.1 Study10:APP数据存储的更多相关文章

  1. WP8 SqlCE和SqlLite数据存储性能比较

    在平时的开发中一定会用到本地数据存储,除了独立存储外我们还可以选择SqlCE和SqlLite:于是在选择上我们就必须权衡他们两者的性能择优选择. 测试代码:(这个例子是在msdn sqllite例子上 ...

  2. 移动互联网实战--资源类APP的数据存储处理和优化

    前言: 对于资源类的APP, 其音频/图形占据了APP本身很大的比例. 如何存储和管理这些资源文件, 成了一个颇具挑战性的难点. 移动端的碎片化, 高中低端手机的并存, 需要开发者不光是具备基础的存储 ...

  3. iOS APP之本地数据存储(译)

    最近工作中完成了项目的用户信息本地存储,查阅了一些本地存储加密方法等相关资料.期间发现了一个来自印度理工学院(IIT)的信息安全工程师的个人博客,写了大量有关iOS Application secur ...

  4. SQLite实现用户数据存储+Android之app:lintVitalRelease解决办法

    今日所学 SQLite实现用户数据存储 遇到的问题 界面没能显示出存在数据库中的信息 明日计划 查找界面没能显示出存在数据库中的信息的原因 报错:app:lintVitalRelease 解决办法: ...

  5. Android之网络数据存储

    一.网络保存数据介绍 可以使用网络来保存数据,在需要的时候从网络上获取数据,进而显示在App中. 用网络保存数据的方法有很多种,对于不同的网络数据采用不同的上传与获取方法. 本文利用LeanCloud ...

  6. Android之文件数据存储

    一.文件保存数据介绍 Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的.文件可用来存放大量数据,如文本.图 ...

  7. Android之SharedPreferences数据存储

    一.SharedPreferences保存数据介绍 如果有想要保存的相对较小键值集合,应使用SharedPreferences API.SharedPreferences对象指向包含键值对的文件并提供 ...

  8. Android开发7:简单的数据存储(使用SharedPreferences)和文件操作

    前言 啦啦啦~大家好,又见面啦~ 本篇博文讲和大家一起完成一个需要注册.登录的备忘录的,一起学习 SharedPreferences 的基本使用,学习 Android 中常见的文件操作方法,复习 An ...

  9. Android系统的五种数据存储形式(二)

    之前介绍了Android系统下三种数据存储形式,今天补充介绍另外两种,分别是内容提供者和网络存储.有些人可能认为内存提供者和网络存储更偏向于对数据的操作而不是数据的存储,但这两种方式确实与数据有关,所 ...

随机推荐

  1. JavaWeb 4 XML

    4 XML 1 XML入门        1.1 引入        HTML: 负责网页的结构            CSS: 负责网页的样式(美观)        Javascript: 负责在浏 ...

  2. HTML5地理位置概述和地理位置对象的详解

    一.地理位置 经度  :   南北极的连接线 纬度  :   东西连接的线   二.位置信息从何而来 IP地址 GPS全球定位系统 Wi-Fi无线网络 基站         三.地理位置对象(navi ...

  3. ios中javascript直接调用oc代码而非通过改变url回调方式(转)

    之前一个ios项目中,需要通过UIWebview来打开一个静态页面,并在静态页面中 调用相关object-c代码. 一.以前使用js调用object-c的方法 关于如何使用javascript调用ob ...

  4. SqlServer_Sql防止注入

    注入式攻击的详细解释SQL下面我们将以一个简单的用户登陆为例,结合代码详细解释一下SQL注入式攻击,与及他的防范措施.对于一个简单的用户登陆可能的代码如下:try{ string strUserNam ...

  5. Jq_Ajax 操作函数跟JQuery 遍历函数跟JQuery数据操作函数

    JQuery文档操作方法 jQuery 库拥有完整的 Ajax 兼容套件.其中的函数和方法允许我们在不刷新浏览器的情况下从服务器加载数据. 函数                             ...

  6. NFS挂载根文件系统

    当NFS跟文件系统挂载不上的时候原因很多,但有一个原因不可忽略,那就是目标板内核支持的NFS版本以及默认版本,我吃过亏,特意做个笔记: setenv bootargs console=ttySAC0  ...

  7. Unity4.3 遮挡剔除:基本知识

    http://blogs.unity3d.com/2013/12/02/occlusion-culling-in-unity-4-3-the-basics/ 这篇博文由Umbra Software的J ...

  8. webpages框架使用@razor语法向js代码传递Json字符串

    进入web开发时间太短,一个人尝试着做了几个初级项目,遇到了太多的困难.尽管不是学开发专业的,仅为爱好所以硬着头皮坚持了下来. 将遇到的问题记录下来,备查. 使用vs2015中asp.net razo ...

  9. bzoj题解汇总(1017-1020)

    bzoj1017: 树形dp. 设\(f[i][j][k]\)表示当前在点\(i\),有\(j\)个用于上层合成,花费金币为\(k\)的最大攻击力. bzoj1018: 一题多解. http://ww ...

  10. MYSQL 表结构的修改

    -- 修改字段 默认值 ALTER TABLE house_owner ALTER COLUMN addr SET DEFAULT ""; -- 修改字段 名称 COMMENT & ...