wp8.1 Study11:APP里文件读写和使用XML和Json序列化
一、文件读写
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序列化的更多相关文章
- python里文件读写操作
文件读写操作一种基本操作,但是里面也存在很多需要注意的问题,例如字符编码.内存缓冲.指针位置等等.如果忽视这些问题就会引起很多不必要的麻烦.简单来说,文件的读写分为几个过程: 打开文件,并定义操作文件 ...
- c#通用配置文件读写类(xml,ini,json)
.NET下编写程序的时候经常会使用到配置文件.配置文件格式通常有xml.ini.json等几种,操作不同类型配置文件需要使用不同的方法,操作较为麻烦.特别是针对同时应用不同格式配置文件的时候,很容易引 ...
- WPF C#之读取并修改App.config文件
原文:WPF C#之读取并修改App.config文件 简单介绍App.config App.config文件一般是存放数据库连接字符串的. 下面来简单介绍一下App.config文件的修改和更新. ...
- python 文件读写方式
一.普通文件读写方式 1.读取文件信息: with open('/path/to/file', 'r') as f: content = f.read() 2.写入文件中: with open('/U ...
- 第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获得连接字符串
第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获 ...
- 修改和获取web.config或app.config文件appSettings配置节中的Add里的value属性 函数
1: /// <summary> 2: /// 修改web.config或app.config文件appSettings配置节中的Add里的value属性 3: /// </summ ...
- C# app.config文件配置和修改
很多时候我们需要对系统的.config文件进度读写操作,例如:系统初始化的参数的更改.系统参数的改变都需要更新到配置文件. 首先我们有必要了解一下app.config.exe.config和vshos ...
- 文件操作ofstream,open,close,ifstream,fin,依照行来读取数据, fstream,iosin iosout,fio.seekg(),文件写入和文件读写,文件拷贝和文件
1.ofstream,open,close 写入文件 #include<iostream> #include<fstream> using namespace std; ...
- 【C语言探索之旅】 第二部分第七课:文件读写
内容简介 1.课程大纲 2.第二部分第七课: 文件读写 3.第二部分第八课预告: 动态分配 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏 ...
随机推荐
- (一)stm32之CMSIS标准、库目录、GPIO
一.CMSIS标准 ST公司的stm32采用的是cortex-m3内核,内核是整个微处理器的CPU.该内核是ARM公司设计的一种处理器体系架构.内核与外设的关系就像PC上的CPU与硬盘.主板.内存等的 ...
- iOS开发之总结
NO.1 要孜孜不倦的学习有句话叫技多不压身,编程本来就是一个更新换代非常快的工作.每年都有新的技术出现,我认为要成为一个出色的程序员只掌握一门语言肯定是不行的.那么,要怎么选择自己的第二门,甚至第三 ...
- Openfire 是怎么存离线消息
原文:http://myopenfire.com/article/getarticle/26 1.openfire默认怎么存离线消息 在默认情况下,不添加任何插件的情况下,当用户不在线,对于发送给 ...
- WCF配置详解
前面一篇文章<WCF 学习总结1 -- 简单实例> 一股脑儿展示了几种WCF部署方式,其中配置文件(App.config/Web.config)都是IDE自动生成,省去了我们不少功夫.现在 ...
- aspx后缀映射成html
1.网站的配置文件添加如下代码: <configuration> <configSections> <section name="RewriterConfig& ...
- Linux chmod命令修改文件与文件夹权限的命令附实例
Linux chmod命令修改文件与文件夹权限的命令附实例 作者:佚名 字体:[增加 减小] 来源:互联网 时间:05-01 20:46:07我要评论 在linux中要修改一个文件夹或文件的权限我们需 ...
- phalcon count统计
单表count: //How many robots are there? $number = Robots::count(); echo "There are ", $numbe ...
- requestAnimationFrame在Chrome里的实现
requestAnimationFrame是HTML5游戏和动画必不可少的函数,相对于setTimeout或setInterval它有两个优势,一是它注册的回调函数与浏览器的渲染同步,不用担心Time ...
- js判断是不是chrome浏览器
方法一: var isChrome = window.navigator.userAgent.indexOf("Chrome"); <script> var isChr ...
- 【待整理】PS切图基础教程
http://www.w3cfuns.com/article-442-1-1.html http://www.w3cfuns.com/article-443-1-1.html 其他专题研究: floa ...