在文件头上建一个index,指向每个Serialized Object的起始位置。

解决方案 »

  1.   

    不懂,能否说的详细点?
    怎么建index,序列化时怎么按index来放,反的时候又怎么按index来读?
    能否给出例子?
      

  2.   

    不知道这个有没有帮助,是一个序列化对象为XML的程序:
    using System;
    using System.IO;
    using System.Xml.Serialization;
    public class Book
    {
    public int BookId;
    public string BookName;
    public string Author;
    public string ISBN;
    public double values;
    public string first;
    public string last;
    public string color;
    public int    pages;
    public string shop; public Book()
    { }
    }public class Object1
    {
    //public  Book[] xmlBook;
    public  Book[] xmlBook;
    //public Order[] order;
    public  string opID;
    public  string opdd;
    public Object1()
    {
    }
        public Object1(Book[] book,string opid)
    {
     xmlBook = book;
     opID = opid;
    }}public class App
    {
    public static void Main()
    {
    Serialize();
    Console.WriteLine("按任意键反序列化...");
    Console.ReadLine();
    Deserialize();
    //SoapSerialize();
    } // 序列化
    public static void Serialize()
    {
    Book[] mars = new Book[1000];

    for(int i=0;i<3;i++)
    {   
    Book mars1 = new Book();
    mars1.BookId = i;
                    mars1.BookName = "wowowo";
        mars1.Author ="matt";
             mars1.ISBN = "123456";
             mars1.values = 12.67;
         mars1.first = "jonny";
             mars1.last = "jonny.R";
            mars1.color = "RED";
             mars1.pages = 561;
             mars1.shop = "ats"; mars[i] = mars1;
    }



    Object1 obj1 = new Object1(mars,"13");
    XmlSerializer serializer = new XmlSerializer(typeof(Object1));
    StreamWriter writer = new StreamWriter("d:\\book.xml"); serializer.Serialize(writer,obj1); writer.Close(); Console.Write("序列化类Book成功!"); 
    } // 反序列化
    public static void Deserialize()
    {
    XmlSerializer serializer = new XmlSerializer(typeof(Object1));
    StreamReader reader = new StreamReader("d:\\book.xml"); Object1 unobj = new Object1();
    unobj = (Object1)serializer.Deserialize(reader);
    reader.Close(); Console.WriteLine("opID"  +  unobj.opID.ToString());
    }
    }