上一篇说了应用数据的应用设置,这篇说说应用文件,应用文件主要分为三种:本地应用文件、漫游应用文件和临时应用文件。

获取根目录方法如下,都是返回一个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学习笔记之应用数据(二)的更多相关文章

  1. windowsphone8.1学习笔记之应用数据(四)

    应用数据的存储格式常用的分为json和xml两种(其实我都想略过这个地方的,json我一直用的是json.net,而wp上操作xml的方式与其他相比也没太多变化). 先说说json数据存储,关于jso ...

  2. windowsphone8.1学习笔记之应用数据(三)

    之前说了如何操作文本文件,如果是图片文件或者其他的二进制文件则需要操作文件的Stream或者Buffer数据.就需要用到DataReader和DataWriter这两个类了,这个的好好的练一下,以后的 ...

  3. windowsphone8.1学习笔记之应用数据(一)

    数据存储分为两种:云存储和应用数据(即本地存储),wp中的应用数据分为两种,一种是应用设置:一种是应用文件.wp的数据相关都是通过ApplicationData来实现,一个程序只有数据存储区. 先说应 ...

  4. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS)

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS) 学习目标 回顾复数,以及 ...

  5. Java菜鸟学习笔记--数组篇(三):二维数组

    定义 //1.二维数组的定义 //2.二维数组的内存空间 //3.不规则数组 package me.array; public class Array2Demo{ public static void ...

  6. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

  7. vue2.0学习笔记之路由(二)路由嵌套+动画

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. vue2.0学习笔记之路由(二)路由嵌套

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 微信小程序开发:学习笔记[9]——本地数据缓存

    微信小程序开发:学习笔记[9]——本地数据缓存 快速开始 说明 本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在 ...

随机推荐

  1. Java多线程之Thread、Runnable、Callable及线程池

    一.多线程 线程是指进程中的一个执行流程,一个进程中可以有多个线程.如java.exe进程中可以运行很多线程.进程是运行中的程序,是内存等资源的集合,线程是属于某个进程的,进程中的多个线程共享进程中的 ...

  2. 对动态规划(Dynamic Programming)的理解:从穷举开始(转)

    转自:http://janfan.cn/chinese/2015/01/21/dynamic-programming.html 动态规划(Dynamic Programming,以下简称dp)是算法设 ...

  3. CVPR 2019|PoolNet:基于池化技术的显著性检测 论文解读

    作者 | 文永亮 研究方向 | 目标检测.GAN 研究动机 ​ 这是一篇发表于CVPR2019的关于显著性目标检测的paper,在U型结构的特征网络中,高层富含语义特征捕获的位置信息在自底向上的传播过 ...

  4. Product of Array Except Self - LeetCode

    Given an array of n integers where n > 1, nums, return an array output such that output[i] is equ ...

  5. 解决百度ueditor配置上传目录为外部目录时,项目启动访问不到图片的问题。

    如图所示,公司项目用到了百度的ueditor,配置的上传目录并不在项目根目录下,而是在外部目录中.于是在上传图片时,出现了无法获取图片的问题. 解决方法:添加该目录至tomcat项目部署目录中,如下图 ...

  6. ios内存管理笔记(三)

    我们在进行iOS开发时,经常会在类的声明部分看见类似于@synthesize window=_window; 的语句,那么,这个window是什么,_ window又是什么,两个东西分别怎么用,这是一 ...

  7. Android Retrofit RxJava实现缓存

    RxJava如何与Retrofit结合参考:http://blog.csdn.net/jdsjlzx/article/details/52015347 缓存配置 app网络数据的离线缓存实现有很多种办 ...

  8. 多源最短路径Floyd算法

    多源最短路径是求图中任意两点间的最短路,采用动态规划算法,也称为Floyd算法.将顶点编号为0,1,2...n-1首先定义dis[i][j][k]为顶点 i 到 j 的最短路径,且这条路径只经过最大编 ...

  9. breakpoints &amp;&amp; lldb &#160;&amp;&amp; chisel 的使用

    Breakpoints BreakPoint分类 breakpoint也是有分类的.我这里的文章内大致按使用的方式分为了 Normal Breakpoint,Exception Breakpoint, ...

  10. 一款很实用的Memcache监控工具

    装了memcahce以后想对使用情况详细了解一下,如分配的内存够不够,都存了什么,经百度后发现这款工具灰常实用!此工具来自Memcache Pecl 中 http://pecl.php.net/pac ...