zoukankan      html  css  js  c++  java
  • 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 + "
    ");
            }

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

  • 相关阅读:
    C++中的句柄类
    普林斯顿大学算法课 Algorithm Part I Week 3 自我总结
    普林斯顿大学算法课 Algorithm Part I Week 3 排序的应用 System Sorts
    普林斯顿大学算法课 Algorithm Part I Week 3 重复元素排序
    普林斯顿大学算法课 Algorithm Part I Week 3 求第K大数 Selection
    普林斯顿大学算法课 Algorithm Part I Week 3 快速排序 Quicksort
    普林斯顿大学算法课 Algorithm Part I Week 3 排序稳定性 Stability
    普林斯顿大学算法课 Algorithm Part I Week 3 比较器 Comparators
    普林斯顿大学算法课 Algorithm Part I Week 3 排序算法复杂度 Sorting Complexity
    普林斯顿大学算法课 Algorithm Part I Week 3 归并排序 Mergesort
  • 原文地址:https://www.cnblogs.com/NEIL-X/p/4165735.html
Copyright © 2011-2022 走看看