内存流MemoryStream及序列化测试!

来源:互联网 发布:机房网络管理软件 编辑:程序博客网 时间:2024/06/04 18:32
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Runtime.Serialization.Formatters;
using System.Runtime.Serialization.Formatters.Soap;
using System.Runtime.Serialization.Formatters.Binary;
using System.Xml.Serialization;
namespace ConsoleApplication1
{
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class Class1
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            System.Data.SqlClient.SqlConnection connection=new System.Data.SqlClient.SqlConnection
                ("Server=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;");
            System.Data.SqlClient.SqlDataAdapter myda=new System.Data.SqlClient.SqlDataAdapter
                ("select * from customers",connection);
            System.Data.DataSet myds=new System.Data.DataSet();
            System.Data.DataSet myds2=new System.Data.DataSet();
            myda.Fill(myds,"Customers");
            System.IO.MemoryStream s=new System.IO.MemoryStream();
            SoapFormatter sf=new SoapFormatter();
            sf.Serialize(s,myds);
            s.Seek(0,SeekOrigin.Begin);
            //或者
            MemoryStream s1=new MemoryStream(s.ToArray(),true);
            myds2=(DataSet)sf.Deserialize(s);
            Console.WriteLine(myds2.GetXmlSchema());
            Console.WriteLine("...............................................................");
            myds2=(DataSet)sf.Deserialize(s1);
            Console.WriteLine(myds2.GetXmlSchema());
            s.Close();
            //试验直接得到字符串的形式
            string s3=System.Text.UTF8Encoding.UTF8.GetString(s1.ToArray());
            Console.WriteLine(s3);
            s1.Close();

        }
    }
}

还有其它序列化,包括XML序列化,Binary序列化,基本方式都是一样的.
另外,还可以序列化到本地文件中.放在内存中就可以在诸如Socket的程序中发送了.
原创粉丝点击