国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

C# DataSet對(duì)象序列化并壓縮

2019-11-17 04:18:43
字體:
供稿:網(wǎng)友

今天做一個(gè)項(xiàng)目中用到把DataSet對(duì)象序列化成文件,并上傳到服務(wù)器,不過生成的文件比較大,就想著壓縮一下,找了一下資料,用GZipStream來壓縮了一下,效果還是非常理想的。現(xiàn)在把這部分代碼整理了一下:

 

view plaincopy to clipboardPRint?
using System.Data;  
using System.IO;  
using System.IO.Compression;  
using System.Runtime.Serialization;  
using System.Runtime.Serialization.Formatters.Binary;  
 
namespace DataSetSerializerDeserialize  
{  
    class Program  
    {  
        /// <summary>  
        /// 序列化DataSet對(duì)象并壓縮  
        /// </summary>  
        /// <param name="ds"></param>  
        static void DataSetSerializerCompression(DataSet ds)  
        {  
            IFormatter formatter = new BinaryFormatter();//定義BinaryFormatter以序列化DataSet對(duì)象  
              
            MemoryStream ms = new MemoryStream();//創(chuàng)建內(nèi)存流對(duì)象  
 
            formatter.Serialize(ms, ds);//把DataSet對(duì)象序列化到內(nèi)存流  
 
            byte[] buffer = ms.ToArray();//把內(nèi)存流對(duì)象寫入字節(jié)數(shù)組  
 
            ms.Close();//關(guān)閉內(nèi)存流對(duì)象  
 
            ms.Dispose();//釋放資源  
 
            FileStream fs = File.Create("datasetCompression.dat");//創(chuàng)建文件  
 
            GZipStream gzipStream = new GZipStream(fs, CompressionMode.Compress, true);//創(chuàng)建壓縮對(duì)象  
 
            gzipStream.Write(buffer, 0, buffer.Length);//把壓縮后的數(shù)據(jù)寫入文件  
 
            fs.Close();//關(guān)閉流  
 
            fs.Dispose();//釋放對(duì)象  
        }  
 
        /// <summary>  
        /// 不壓縮直接序列化DataSet  
        /// </summary>  
        /// <param name="ds"></param>  
        static void DataSetSerializer(DataSet ds)  
        {  
            IFormatter formatter = new BinaryFormatter();//定義BinaryFormatter以序列化DataSet對(duì)象  
 
            FileStream fs = File.Create("dataset.dat");//創(chuàng)建文件  
 
            formatter.Serialize(fs, ds);//把DataSet對(duì)象序列化到文件  
 
            fs.Close();//關(guān)閉流  
 
            fs.Dispose();//釋放對(duì)象  
        }  
 
        static void Main(string[] args)  
        {  
            DataTable table = new DataTable("ParentTable");  
              
            DataColumn column;  
            DataRow row;  
 
            column = new DataColumn();  
            column.DataType = System.Type.GetType("System.Int32");  
            column.ColumnName = "id";  
            column.ReadOnly = true;  
            column.Unique = true;  
            table.Columns.Add(column);  
 
            column = new DataColumn();  
            column.DataType = System.Type.GetType("System.String");  
            column.ColumnName = "ParentItem";  
            column.AutoIncrement = false;  
            column.Caption = "ParentItem";  
            column.ReadOnly = false;  
            column.Unique = false;  
            table.Columns.Add(column);  
 
            DataColumn[] PrimaryKeyColumns = new DataColumn[1];  
            PrimaryKeyColumns[0] = table.Columns["id"];  
            table.PrimaryKey = PrimaryKeyColumns;  
 
            DataSet dataSet = new DataSet();  
            dataSet.Tables.Add(table);  
 
            for (int i = 0; i <= 100; i++)  
            {  
                row = table.NewRow();  
                row["id"] = i;  
                row["ParentItem"] = "ParentItem " + i;  
                table.Rows.Add(row);  
            }  
            DataSetSerializer(dataSet);  
            DataSetSerializerCompression(dataSet);  
        }  
    }  

using System.Data;
using System.IO;
using System.IO.Compression;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace DataSetSerializerDeserialize
{
    class Program
    {
        /// <summary>
        /// 序列化DataSet對(duì)象并壓縮
        /// </summary>
        /// <param name="ds"></param>
        static void DataSetSerializerCompression(DataSet ds)
        {
            IFormatter formatter = new BinaryFormatter();//定義BinaryFormatter以序列化DataSet對(duì)象
           
            MemoryStream ms = new MemoryStream();//創(chuàng)建內(nèi)存流對(duì)象

            formatter.Serialize(ms, ds);//把DataSet對(duì)象序列化到內(nèi)存流

            byte[] buffer = ms.ToArray();//把內(nèi)存流對(duì)象寫入字節(jié)數(shù)組

            ms.Close();//關(guān)閉內(nèi)存流對(duì)象

            ms.Dispose();//釋放資源

            FileStream fs = File.Create("datasetCompression.dat");//創(chuàng)建文件

            GZipStream gzipStream = new GZipStream(fs, CompressionMode.Compress, true);//創(chuàng)建壓縮對(duì)象

            gzipStream.Write(buffer, 0, buffer.Length);//把壓縮后的數(shù)據(jù)寫入文件

            fs.Close();//關(guān)閉流

            fs.Dispose();//釋放對(duì)象
        }

        /// <summary>
        /// 不壓縮直接序列化DataSet
        /// </summary>
        /// <param name="ds"></param>
        static void DataSetSerializer(DataSet ds)
        {
            IFormatter formatter = new BinaryFormatter();//定義BinaryFormatter以序列化DataSet對(duì)象

            FileStream fs = File.Create("dataset.dat");//創(chuàng)建文件

            formatter.Serialize(fs, ds);//把DataSet對(duì)象序列化到文件

            fs.Close();//關(guān)閉流

            fs.Dispose();//釋放對(duì)象
        }

        static void Main(string[] args)
        {
            DataTable table = new DataTable("ParentTable");
           
            DataColumn column;
            DataRow row;

            column = new DataColumn();
            column.DataType = System.Type.GetType("System.Int32");
            column.ColumnName = "id";
            column.ReadOnly = true;
            column.Unique = true;
            table.Columns.Add(column);

            column = new DataColumn();
            column.DataType = System.Type.GetType("System.String");
            column.ColumnName = "ParentItem";
            column.AutoIncrement = false;
            column.Caption = "ParentItem";
            column.ReadOnly = false;
            column.Unique = false;
            table.Columns.Add(column);

            DataColumn[] PrimaryKeyColumns = new DataColumn[1];
            PrimaryKeyColumns[0] = table.Columns["id"];
            table.PrimaryKey = PrimaryKeyColumns;

            DataSet dataSet = new DataSet();
            dataSet.Tables.Add(table);

            for (int i = 0; i <= 100; i++)
            {
                row = table.NewRow();
                row["id"] = i;
                row["ParentItem"] = "ParentItem " + i;
                table.Rows.Add(row);
            }
            DataSetSerializer(dataSet);
            DataSetSerializerCompression(dataSet);
        }
    }
}
 

 

這里先把序列化及壓縮的部分代碼貼出來,明天貼解壓及反序列化的代碼。

http://blog.csdn.net/wlkjhxd/archive/2009/03/24/4021436.aspx


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁陵县| 古田县| 夹江县| 寿阳县| 东丽区| 璧山县| 门头沟区| 仁寿县| 洛扎县| 临颍县| 祥云县| 勐海县| 同仁县| 九江市| 东阳市| 平山县| 星座| 芷江| 咸丰县| 老河口市| 光泽县| 龙游县| 临清市| 苏尼特右旗| 海兴县| 通榆县| 谷城县| 泰顺县| 新田县| 华容县| 北流市| 永川市| 峡江县| 阿图什市| 沙河市| 桐梓县| 阿克陶县| 新河县| 文化| 阿克陶县| 饶阳县|