原創|其它|編輯:郝浩|2009-09-29 14:13:41.000|閱讀 1010 次
概述:本文介紹了什么是C#序列化/反序列化。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
using System;
using System.Collections.Generic; using System.Text; using System.Runtime.Serialization.Formatters.Binary; using System.IO; using System.IO.Compression; using System.Windows.Forms;
namespace Vjsdn_Tester
{
public class TestZipObject
{
/// <summary>
///測試簡單序列化/反序列化對象
/// </summary>
public void Test()
{
SerilizabledObject obj = new SerilizabledObject();
byte[] bs = ZipObject.CompressionObject(obj); object o = ZipObject.DecompressionObject(bs); //還原,ok MessageBox.Show((o as SerilizabledObject).getName());
}
/// <summary>
/// 序列化對象,將對象寫入文件,然后還原.
/// </summary>
public void TestReadWriteFile()
{
SerilizabledObject obj = new SerilizabledObject();
byte[] bs = ZipObject.CompressionObject(obj);
//將數組寫入文件
Stream writer = new FileStream("E:\\test.shape", FileMode.Create, FileAccess.Write, FileShare.Write); writer.Write(bs, 0, bs.Length); writer.Flush(); writer.Close();
//讀取文件,先寫入數組,再從數組轉換為對象.Easy! FileStream fs = File.Open("E:\\test.shape", FileMode.Open); byte[] bss = new byte[fs.Length]; int i = fs.Read(bss, 0, (int)fs.Length);
object o = ZipObject.DecompressionObject(bss); //還原,ok MessageBox.Show((o as SerilizabledObject).getName());
}
}
/// <summary>
///測試用對象
/// </summary>
[Serializable]
public class SerilizabledObject
{
string id = "id001";
string name = "";
public SerilizabledObject() { }
public string getName()
{
return this.name;
}
}
/// <summary>
///壓縮解壓object
/// </summary>
public class ZipObject
{
#region壓縮解壓object
public static byte[] CompressionObject(object DataOriginal)
{
if (DataOriginal == null) return null;
BinaryFormatter bFormatter = new BinaryFormatter();
MemoryStream mStream = new MemoryStream();
bFormatter.Serialize(mStream, DataOriginal); byte[] bytes = mStream.ToArray();
MemoryStream oStream = new MemoryStream();
DeflateStream zipStream = new DeflateStream(oStream, CompressionMode.Compress); zipStream.Write(bytes, 0, bytes.Length); zipStream.Flush(); zipStream.Close(); return oStream.ToArray();
}
public static object DecompressionObject(byte[] bytes)
{
if (bytes == null) return null;
MemoryStream mStream = new MemoryStream(bytes);
mStream.Seek(0, SeekOrigin.Begin); DeflateStream unZipStream = new DeflateStream(mStream, CompressionMode.Decompress, true);
object dsResult = null;
BinaryFormatter bFormatter = new BinaryFormatter();
dsResult = (object)bFormatter.Deserialize(unZipStream);
return dsResult;
}
#endregion
}
}
測試代碼:
private void button7_Click(object sender, EventArgs e)
{
new TestZipObject().Test(); // 測試簡單序列化/反序列化對象new TestZipObject().TestReadWriteFile(); // 序列化對象,將對象寫入文件,然后還原.
}
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:IT專家網