一、文件读写

1、基本操作(使用FileIO API)

  这个方法在上一个stduy已经学过,那么贴出来复习下,代码如下:

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:所有的文件操作是异步

2、使用流(stream)操作

  我们也可以创建一个流,利用它进行读取和写入操作。它可以被使用在所有的WinRT上。

进行写操作,代码如下:

        StreamWriter writeStream = null;

        private async void openLocalStorageFile(string filename)//打开文件流
{
if (writeStream != null) return; StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Stream baseStream = await localFolder.OpenStreamForWriteAsync(filename, CreationCollisionOption.OpenIfExists);
writeStream = new StreamWriter(baseStream);
} private async void closeLocalStorageFile()//关闭文件流
{
if (writeStream == null) return;
await writeStream.FlushAsync();
writeStream.Dispose();
writeStream = null;
} private async void writeLine(string text)//写数据到文件流中
{
await writeStream.WriteAsync(text + "\n");
}

二、使用XML、JSON 序列化(serializer)

  通过之前的学习,我们已经很容易读写一些设置保存和文本,然而使用XML、JSON 序列化,我们也可以十分简单地存储对象。在Windows Phone上的序列化库,使我们非常容易储存结构化数据。应用程序可以序列化数据成XML或JSON格式,而且这些数据将被存储或转化为文本。

1、序列化规则

  • XML序列化要求的对象必须有一个无参数的构造函数。
  • 私有和静态成员将不会被保存。
  • 如果你在应用程序更新时在相应的类中添加了成员,那么在恢复使用之前的类定义的序列化的数据文件时,应用程序将会出现错误。

2、使用JSON序列化

  下面把一个Customers对象序列化了,把数据转化成了JSON文件保存。

  写操作:

using (Stream stream = await notesFolder.OpenStreamForWriteAsync(filename,
CreationCollisionOption.OpenIfExists))
{
DataContractJsonSerializer serializer =
new DataContractJsonSerializer(typeof(Customers)); serializer.WriteObject(stream, customers);

    await stream.FlushAsync();

    stream.Dispose();

}

  读操作:

using (Stream stream = await notesFolder.OpenStreamForReadAsync(filename))
{
DataContractJsonSerializer serializer =
new DataContractJsonSerializer(typeof(Customers)); Customers result = serializer.ReadObject(stream) as Customers;
   stream.Dispose();//释放数据流
}

3、使用XML序列化

操作与JSON序列化类似,下面代码如下:

写操作:

XmlSerializer serializer = new XmlSerializer(typeof(Customers));

serializer.Serialize(stream, customers);

读操作:

XmlSerializer serializer = new XmlSerializer(typeof(Customers));

Customers result = serializer.Deserialize(stream) as Customers;

知识学习分享~~~小白一个,以上资料基本是翻译channel9里面的相关课程。

wp8.1 Study11:APP里文件读写和使用XML和Json序列化的更多相关文章

  1. python里文件读写操作

    文件读写操作一种基本操作,但是里面也存在很多需要注意的问题,例如字符编码.内存缓冲.指针位置等等.如果忽视这些问题就会引起很多不必要的麻烦.简单来说,文件的读写分为几个过程: 打开文件,并定义操作文件 ...

  2. c#通用配置文件读写类(xml,ini,json)

    .NET下编写程序的时候经常会使用到配置文件.配置文件格式通常有xml.ini.json等几种,操作不同类型配置文件需要使用不同的方法,操作较为麻烦.特别是针对同时应用不同格式配置文件的时候,很容易引 ...

  3. WPF C#之读取并修改App.config文件

    原文:WPF C#之读取并修改App.config文件 简单介绍App.config App.config文件一般是存放数据库连接字符串的.  下面来简单介绍一下App.config文件的修改和更新. ...

  4. python 文件读写方式

    一.普通文件读写方式 1.读取文件信息: with open('/path/to/file', 'r') as f: content = f.read() 2.写入文件中: with open('/U ...

  5. 第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获得连接字符串

    第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获 ...

  6. 修改和获取web.config或app.config文件appSettings配置节中的Add里的value属性 函数

    1: /// <summary> 2: /// 修改web.config或app.config文件appSettings配置节中的Add里的value属性 3: /// </summ ...

  7. C# app.config文件配置和修改

    很多时候我们需要对系统的.config文件进度读写操作,例如:系统初始化的参数的更改.系统参数的改变都需要更新到配置文件. 首先我们有必要了解一下app.config.exe.config和vshos ...

  8. 文件操作ofstream,open,close,ifstream,fin,依照行来读取数据, fstream,iosin iosout,fio.seekg(),文件写入和文件读写,文件拷贝和文件

     1.ofstream,open,close 写入文件 #include<iostream> #include<fstream> using namespace std; ...

  9. 【C语言探索之旅】 第二部分第七课:文件读写

    内容简介 1.课程大纲 2.第二部分第七课: 文件读写 3.第二部分第八课预告: 动态分配 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏 ...

随机推荐

  1. Hostapd

    Hostapd 一.基本概念 hostapd is an application used to setup your wireless interface as an access-point (m ...

  2. Object Pascal 控制语句

    控制语句 1.常量声明语句常量在声明时就被赋予了一个值,在程序执行过程中是不可改变的. 格式 const 常量名 :数据类型 = 值 下面的例子声明了3 个常量: const Pi = 3.14159 ...

  3. BestCoder Valentine's Day Round

    昨晚在开赛前5分钟注册的,然后比赛刚开始就掉线我就不想说了(蹭网的下场……),只好用手机来看题和提交,代码用电脑打好再拉进手机的(是在傻傻地用手机打了一半后才想到的办法). 1001,也就是 hdu ...

  4. Sqlserver_sql注入

    随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进 ...

  5. VB6 GDI+ 入门教程[2] GDI+初始化

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[2] GDI+初始化 2009 年 6 月 18 日 7 ...

  6. mac 下获取 os x 的系统版本,使用 oc cocoa

    mac 下获取 os x 的系统版本,使用 oc cocoa 1: #import <CoreServices/CoreServices.h> SInt32 major, minor, b ...

  7. 扩展Date的DateDiff方法--日期差

    Date.prototype.DateDiff = function(after){ var diffDay; var beforeDate = new Date(this).format(" ...

  8. 你的java 代码对JIT编译友好吗?

    JIT编译器是Java虚拟机(以下简称JVM)中效率最高并且最重要的组成部分之一.但是很多的程序并没有充分利用JIT的高性能优化能力,很多开发者甚至也并不清楚他们的程序有效利用JIT的程度. 在本文中 ...

  9. Js作用域链及变量作用域

    要理解变量的作用域范围就得先理解作用域链 用var关键字声明一个变量时,就是为该变量所在的对象添加了一个属性. 作用域链:由于js的变量都是对象的属性,而该对象可能又是其它对象的属性,而所有的对象都是 ...

  10. web 页面内容优化管理与性能技巧

    回想一下,以前我们不得不花费大量时间去优化页面内容(图片.CSS等等),如今用户有更快速的互联网链接,我们似乎能够使用更大的图像或更大的闪存文件,里面包含的有视频或者图片.然而,随着移动开发的兴起,我 ...