C# DataSet对象解压缩及反序列化

    技术2022-05-19  23

    昨天说了DataSet的序列化及压缩,今天把解压缩及反序列化的代码写一下:

     

    view plaincopy to clipboardprint?/// <summary>   /// 反序列化压缩的DataSet   /// </summary>   /// <param name="_filePath"></param>   /// <returns></returns>   static DataSet DataSetDeserializeDecompress(string _filePath)   {       FileStream fs = File.OpenRead(_filePath);//打开文件         fs.Position = 0;//配置文件流的位置         GZipStream gzipStream = new GZipStream(fs, CompressionMode.Decompress);//建立解压对象         byte[] buffer = new byte[4096];//定义数据缓冲         int offset = 0;//定义读取位置         MemoryStream ms = new MemoryStream();//定义内存流         while ((offset = gzipStream.Read(buffer, 0, buffer.Length)) != 0)       {           ms.Write(buffer, 0, offset);//解压后的数据写入内存流       }           BinaryFormatter sfFormatter = new BinaryFormatter();//定义BinaryFormatter以反序列化DataSet对象         ms.Position = 0;//配置内存流的位置         DataSet ds;   try      {           ds = (DataSet)sfFormatter.Deserialize(ms);//反序列化       }       catch      {           throw;       }       finally      {           ms.Close();//关上内存流           ms.Dispose();//释放资源       }       fs.Close();//关上文件流       fs.Dispose();//释放资源       gzipStream.Close();//关上解压缩流       gzipStream.Dispose();//释放资源       return ds;   }     /// <summary>   /// 反序列化未压缩的DataSet   /// </summary>   /// <param name="_filePath"></param>   /// <returns></returns>   static DataSet DataSetDeserialize(string _filePath)   {       FileStream fs = File.OpenRead(_filePath);//打开文件         fs.Position = 0;//配置文件流的位置         BinaryFormatter sfFormatter = new BinaryFormatter();//定义BinaryFormatter以反序列化DataSet对象

    DataSet ds;         try      {           ds = (DataSet)sfFormatter.Deserialize(fs);//反序列化       }       catch      {           throw;       }       finally      {           fs.Close();//关上内存流           fs.Dispose();//释放资源       }       fs.Close();//关上文件流       fs.Dispose();//释放资源       return ds;   } 


    最新回复(0)