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里面的相关课程。

时间: 2024-10-13 07:04:37

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

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

1: /// <summary> 2: /// 修改web.config或app.config文件appSettings配置节中的Add里的value属性 3: /// </summary> 4: /// <remarks> 5: /// 注意,调用该函数后,会使整个Web Application重启,导致当前所有的会话丢失 6: /// </remarks> 7: /// <param name="key">要修改的键key

读写app.config文件

项目中经常需要对app.config文件,从网上参考,先记录. 1.读取config文件 string color = ConfigurationManager.AppSettings["Color"]; string fontSize = ConfigurationManager.AppSettings["FontSize"]; string skin = ConfigurationManager.AppSettings["Skin"]; 2.

IOS-沙盒机制(二 文件读写)

一 目录说明 如下图所示,一个沙盒中典型存在下面的目录和文件 各个目录及文件说明: 1.Documents      您应该将所有的应用程序数据文件写入到这个目录下,这个目录用于存储用户数据或其它应该定期备份的信息. 2.AppName.app   这是应用程序的程序包目录,包含应用程序的本身.由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动. 3.Library              这个目录下有两个子目录:Caches 和 Prefer

DataPersistence(数据持久化: 文件读写, NSUserDefault, 归档)

 DataPersistence(数据持久化) 1.数据持久化?   数据永久的保存 2.为什么要做数据持久化?   要把之前的操作(存档, 记录等)保存起来 3.为什么数据之前保存不了呢?   以前的数据都存在内存中, 程序一旦终止, 内存就会被收回 4.数据保存到哪里, 才能做数据持久化   把数据存到硬盘里 5.存到硬盘的哪个位置呢?   沙盒机制: iOS会为每一个应用, 单独创建一个文件夹(沙盒), 这个文件夹只允许当前应用访问 6.如何通过代码获取路径? 7.沙盒文件夹又分了多个子文

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

 1.ofstream,open,close 写入文件 #include<iostream> #include<fstream> using namespace std; //通过ofstream的方式实现写入文件 open,close void main() { ofstream fout;  //ofstream输出文件 fout.open("E:\\1.txt");//打开文件 fout << "1234abcdef";

【C++探索之旅】第一部分第十课:文件读写,海阔凭鱼跃

内容简介 1.第一部分第十课:文件读写,海阔凭鱼跃 2.第一部分第十一课预告:小练习,猜单词 文件读写,海阔凭鱼跃 上一课<[C++探索之旅]第一部分第九课:数组威武,动静合一>中,我们学习了动态数组和静态数组,也看到其实字符串很类似字符数组(到了之后的第二部分,学习面向对象,我们会知道其实string是一个类). 到目前为止,我们写的程序还比较简单,当然了,因为我们刚开始学习C++嘛.但只要加以训练,我们就慢慢地能够写一些真正的应用了.我们也开始逐渐了解C++的基础知识了,不过缺了很重要的一

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

内容简介 1.课程大纲 2.第二部分第七课: 文件读写 3.第二部分第八课预告: 动态分配 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文件读写

Android 文件读写高级

往设备里写文件有几种选择,写在内存中,或SD卡中. 往内存里写好处是,可以写在 data/data/包名 文件夹里,而此文件是不可访问的(除非 root).这样可以增加文件的安全性,避免被误删.缺点也显而易见,如果文件太大,会占用手机内存.另外写在此包里的文件,删除app的时候会自动删除. 写在SD卡中如果怕被误删,可以设置为隐藏,即在文件夹名前加 " ." ,如 ".test".这样非 root 用户就看不见此文件夹了. Environment.getExtern

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

 1.ofstream,open,close 写入文件 #include<iostream> #include<fstream> using namespace std; //通过ofstream的方式实现写入文件 open,close void main() { ofstream fout;  //ofstream输出文件 fout.open("E:\\1.txt");//打开文件 fout << "1234abcdef";