码迷,mamicode.com
首页 > 其他好文 > 详细

C#序列化多个对象到单个文件

时间:2014-06-18 09:22:20      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   blog   code   http   

  特定的情况下,可能需要将多个对象保存到文件中。在网上找了一阵,没发现专门说这个问题的。在博问看到了一个相关的问题和回答,整理了一下。以下是我的一个简单实现:

   //测试用于保存的类 
  [Serializable]
class TestToSerizable { int i; string b; public TestToSerizable(int i, string b) { this.i = i; this.b = b; } } class Program { static void Main(string[] args) { TestToSerizable testa = new TestToSerizable(1, "testa"); TestToSerizable testb = new TestToSerizable(2, "testb"); TestToSerizable testc = new TestToSerizable(3, "testc");
       //序列化保存多个对象 FileStream fs
= new FileStream("DataFile.dat", FileMode.OpenOrCreate); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(fs, testa); formatter.Serialize(fs, testb); formatter.Serialize(fs, testc); fs.Flush(); fs.Close();         
       //逆序列化读取多个对象
fs = new FileStream("DataFile.dat", FileMode.Open); formatter = new BinaryFormatter(); TestToSerizable a = (TestToSerizable)formatter.Deserialize(fs); TestToSerizable b = (TestToSerizable)formatter.Deserialize(fs); TestToSerizable c = (TestToSerizable)formatter.Deserialize(fs); fs.Close();

 Console.WriteLine("a.i=" + a.i + " a.b=" + a.b);
 Console.WriteLine("b.i=" + b.i + " b.b=" + b.b);
 Console.WriteLine("c.i=" + c.i + " c.b=" + c.b);

        }
    }

   运行结果:

  bubuko.com,布布扣

  进一步,可能会有要保存不同类对象的情况。

   

    [Serializable]
    class TestToSerizableA
    {
        public int i;
        public string b;
        public TestToSerizableA(int i, string b)
        {
            this.i = i;
            this.b = b;
        }
    }
    [Serializable]
    class TestToSerizableB
    {
        public bool a;
        public float b;
        public TestToSerizableB(bool a, float b)
        {
            this.a = a;
            this.b = b;
        }
    }
    class Program
    {

        static void Main(string[] args)
        {
            TestToSerizableA testa = new TestToSerizableA(1, "testa");
            TestToSerizableB testb = new TestToSerizableB(false, 1.23f);
            TestToSerizableA testc = new TestToSerizableA(3, "testc");
            TestToSerizableB testd = new TestToSerizableB(true, 3.14f);

            //交叉保存的不同类型的对象
            FileStream fs = new FileStream("DataFile.dat", FileMode.OpenOrCreate);
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(fs, testa);
            formatter.Serialize(fs, testb);
            formatter.Serialize(fs, testc);
            formatter.Serialize(fs, testd);
            formatter.Serialize(fs, 1);//基础类型也可以

            fs.Flush();
            fs.Close();

            //按保存时的顺序读取
            fs = new FileStream("DataFile.dat", FileMode.Open);
            formatter = new BinaryFormatter();
            TestToSerizableA a = (TestToSerizableA)formatter.Deserialize(fs);
            TestToSerizableB b = (TestToSerizableB)formatter.Deserialize(fs);
            TestToSerizableA c = (TestToSerizableA)formatter.Deserialize(fs);
            TestToSerizableB d = (TestToSerizableB)formatter.Deserialize(fs);
            int i = (int)formatter.Deserialize(fs);

            fs.Close();
            Console.WriteLine("a.i=" + a.i + " a.b=" + a.b);
            Console.WriteLine("b.i=" + b.a + " b.b=" + b.b);
            Console.WriteLine("c.i=" + c.i + " c.b=" + c.b);
            Console.WriteLine("d.i=" + d.a + " d.b=" + d.b);
            Console.WriteLine("i=" + i);
}
}

 

  运行结果:

  bubuko.com,布布扣

  

  第一次写博客,抛砖引玉,请各位前辈不吝赐教。

  以上

C#序列化多个对象到单个文件,布布扣,bubuko.com

C#序列化多个对象到单个文件

标签:des   style   class   blog   code   http   

原文地址:http://www.cnblogs.com/zhang-ming/p/3793213.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!