windowsphone8.1学习笔记之应用数据(二)
上一篇说了应用数据的应用设置,这篇说说应用文件,应用文件主要分为三种:本地应用文件、漫游应用文件和临时应用文件。
获取根目录方法如下,都是返回一个StorageFolder对象(稍后介绍这个)。
//获取本地应用文件 ApplicationData.Current.LocalFolder; //获取漫游应用文件 ApplicationData.Current.RoamingFolder //获取临时应用文件 ApplicationData.Current.TemporaryFolder;
这里细说下漫游应用文件的特点:
1.数据大小有限制:每个应用的可漫游的大小由ApplicationData.RoamingStorageQuota属性决定,如果漫游数据超过其最大值则会挂起其中所有数据复制到云,直到大小不超过最大值。所以用户首选项、链接和小型数据文件使用漫游数据是最好的做法。
2.数据改变时机的不确定性:漫游数据会同步到用户的所有设备中,所以要考虑到应用数据变化对当前应用的影响,可以通过注册ApplicationData.DataChanged事件来进行监控。
3.数据版本的统一性:如果用户在某个设备安装更新版本的应用,应用数据将会本复制到云,而不会将应用数据更新到安装了该应用的其他设备。
4.漫游数据有时间限制:这个时间是30天,如果用户在30天内都不使用该应用,那么30天后应用数据将会从云中删除,换句话说,如果用户在漫游数据有限期内使用应用,那么数据是”永久“的。
5.漫游数据的同步时间依赖网络和设备:这个好理解吧,不多说!
漫游数据还可以通过特殊的设置键来设置漫游数据的同步优先级,这个key为HighPriority,支持复合数据。
ApplicationDataContainer applicationdata = ApplicationData.Current.LocalSettings; application.Values["HighPriority"]=xxxxxx;
来个简单的例子
//获取本地文件夹根目录
StorageFolder localfolder = ApplicationData.Current.LocalFolder;
//创建名为MyFolder的文件夹,如果存在则打开它
var folder = await lcoalfolder.CreateFolderAsync("MyFolder",CreationCollisionOption.OpenIfExists);
//创建名为Test.txt的文件,存在则替换掉
var file = await folder.CreateFileAsync("Test.txt",CreationCollisionOption.ReplaceExisting);
//文本信息的读写可通过StreamReader/StreamWriter和FileIO静态类中的方法来实现的
//StreamReader/StreamWriter默认编码为UTF-8
//流和二进制则是通过DataReader和DataWriter,下篇博客讲
//通过FileIO类实现读写
string fileContent = await FileIO.ReadTextAsync(file);
await FileIO.WriterTextAsync(file,"hello world");
//还可以通过如下方式实现读写
var readerstream = await fild.OpenStreamForReadAsync();
var writerstream = await fild.OpenStreamForWriteAsync();
byte[] bytes = Encoding.UTF8.GetBytes("Hello!".ToCharArray());
writerstream.Write(bytes,,bytes.length);
//通过StreamReader和StreamWriter实现读写
using(StreamReader reader = new StreamReader(readerstream))
{
string fileContent = reader.ReadToEnd();
}
using(StreamWriter writer = new StreamWriter(writerstream))
{
writer.WriteLine("Test");
}
//删除文件
await file.DeleteAsync();
//复制文件
StorageFile fileCopy = await file.CopyAsync("目标文件夹","名称",NameCollisionOption.ReplaceExisting);
//重命名
StorageFile file = await file.RenameAsync("newname");
//移动文件
await file.MoveAsync(newFolder,newFileName);
其实这个有点C#基础,对文件操作熟悉点的都没什么问题,就不多说了!自己点一下,各种方法和属性都出来了,都有中文翻译,很明了!
windowsphone8.1学习笔记之应用数据(二)的更多相关文章
- windowsphone8.1学习笔记之应用数据(四)
应用数据的存储格式常用的分为json和xml两种(其实我都想略过这个地方的,json我一直用的是json.net,而wp上操作xml的方式与其他相比也没太多变化). 先说说json数据存储,关于jso ...
- windowsphone8.1学习笔记之应用数据(三)
之前说了如何操作文本文件,如果是图片文件或者其他的二进制文件则需要操作文件的Stream或者Buffer数据.就需要用到DataReader和DataWriter这两个类了,这个的好好的练一下,以后的 ...
- windowsphone8.1学习笔记之应用数据(一)
数据存储分为两种:云存储和应用数据(即本地存储),wp中的应用数据分为两种,一种是应用设置:一种是应用文件.wp的数据相关都是通过ApplicationData来实现,一个程序只有数据存储区. 先说应 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS)
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS) 学习目标 回顾复数,以及 ...
- Java菜鸟学习笔记--数组篇(三):二维数组
定义 //1.二维数组的定义 //2.二维数组的内存空间 //3.不规则数组 package me.array; public class Array2Demo{ public static void ...
- JavaScript学习笔记之数组(二)
JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...
- vue2.0学习笔记之路由(二)路由嵌套+动画
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue2.0学习笔记之路由(二)路由嵌套
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 微信小程序开发:学习笔记[9]——本地数据缓存
微信小程序开发:学习笔记[9]——本地数据缓存 快速开始 说明 本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在 ...
随机推荐
- Unity工程资源破解
Unity工程资源提取其实还是很方便的,网上也有很多相关介绍,比如雨凇就专门写了一遍关于破解Unity资源的文章(http://www.xuanyusong.com/archives/3618 ...
- idea---搭建maven,tomcat入门
这篇随笔讲讲idea工具的安装和使用和在idea中搭建maven的分享. 一.概念 1.IntelliJ IDEA是什么? DEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境. ...
- 标签页的切换方法(DOM)
效果: 1.点击“JAVA语言” 2.点击“C语言” 3.点击C++语言 代码: <!doctype html> <html> <head> <meta ch ...
- Resolving the Provisioning Profile Invalid Status
Q: What causes the provisioning profile "Invalid" status? How do I resolve it, and how do ...
- 苹果开发者:Siri未开放API 有些让人失望
北京时间6月12日消息,据国外媒体报道,苹果公司在WWDC大会上展示了新版iOS和OS X系统,但由于未开放Siri API,一些苹果开发者还是有些失望. Siri API可以让开发者在自己的应用中整 ...
- iOS -- iOS11新特性,如何适配iOS11
前言 这几天抽空把WWDC的Session看了一些,总结了一些iOS11新的特性,可能对我们的App有影响,需要我们进行适配.本文作为一个总结. 本文内容包括:集成了搜索的大标题栏.横向选项卡栏.Ma ...
- struts2中迭代的使用方法
struts2 Html代码 <s:iterator value="resultList" id="user" status="st&qu ...
- 【音乐App】—— Vue-music 项目学习笔记:推荐页面开发
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 上一篇总结了项目概述.项目准备.页面骨架搭建.这一篇重点梳理推荐页面开发.项目github地址:https://github.com/66We ...
- C 位域
C 位域 如果程序的结构中包含多个开关量,只有 TRUE/FALSE 变量,如下: struct { unsigned int widthValidated; unsigned int heightV ...
- JAVA学习第十四课(接口:implements及其基本应用)
接口: 我们知道抽象类中能够定义抽象方法,也能够定义非抽象方法.当一个抽象类中的方法都是抽象方法的时候,我们就能够定义还有一种表现方式:接口(interface),所以接口是一种特殊的抽象类 接口的出 ...