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

王朝学院·作者佚名  2009-03-26
窄屏简体版  字體: |||超大  

昨天说了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;

}

http://blog.csdn.net/wlkjhxd/archive/2009/03/25/4022544.aspx

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航