序列化及压缩
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();//释放对象
//}