你的位置:首页 > 操作系统

[操作系统]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,0,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#基础,对文件操作熟悉点的都没什么问题,就不多说了!自己点一下,各种方法和属性都出来了,都有中文翻译,很明了!