序列化及压缩

public static byte[] DataSetSerializerCompression(DataSet ds) //这里我是将一个DataSet序列化及压缩,最后以byte形式返回
        {
            IFormatter formatter = new BinaryFormatter();//定义BinaryFormatter以序列化DataSet对象

            MemoryStream ms = new MemoryStream();//创建内存流对象

            formatter.Serialize(ms, ds);//把DataSet对象序列化到内存流

            byte[] buffer = ms.ToArray();//把内存流对象写入字节数组

            ms.Close();//关闭内存流对象

            ms.Dispose();//释放资源

            FileStream fs = File.Create("datasetCompression.dat");//创建文件

            GZipStream gzipStream = new GZipStream(fs, CompressionMode.Compress, true);//创建压缩对象

            gzipStream.Write(buffer, 0, buffer.Length);//把压缩后的数据写入文件

            gzipStream.Close();//关闭压缩流,这里要注意:一定要关闭,要不然解压缩的时候会出现小于4K的文件读取不到数据,大于4K的文件读取不完整

            gzipStream.Dispose();//释放对象

            fs.Close();//关闭流

            fs.Dispose();//释放对象

            buffer = File.ReadAllBytes(Application.StartupPath+"\\datasetCompression.dat");//读取应用软件所在目录下的文件
            return buffer;

        }

        //// 不压缩直接序列化DataSet
        //static void DataSetSerializer(DataSet ds)
        //{
        //    IFormatter formatter = new BinaryFormatter();//定义BinaryFormatter以序列化DataSet对象

        //    FileStream fs = File.Create("dataset.dat");//创建文件

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

        //    fs.Close();//关闭流

        //    fs.Dispose();//释放对象
        //}

转载于:https://www.cnblogs.com/bobby7514650/archive/2009/06/04/1495895.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值