1 下面是我寫的一個序列化的類
public static class ObjSerialize
{
/// <summary>
/// 將對象數組obj序列化,內存中的緩沖區的數據序列化
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static byte[] Serialize(object obj)
{
byte[] arr = null;
if (obj!=null)
{
//MemoryStream類用於向內存而不是磁盤讀寫數據
using (MemoryStream ms=new MemoryStream())
{
//序列化操作,把內存中的東西寫到硬盤中
BinaryFormatter fomatter = new BinaryFormatter();
fomatter.Serialize(ms, obj);
ms.Flush();
arr = ms.ToArray();
}
}
return arr;
}
public static object Deserialize(byte[] arr)
{
object obj = null;
using (MemoryStream ms=new MemoryStream())
{
ms.Write(arr, 0, arr.Length);
ms.Flush();
ms.Position = 0;
BinaryFormatter formatter = new BinaryFormatter();
obj= formatter.Deserialize(ms);
}
return obj;
}
}
2 測試這個類
我自己新建了一個student的對象,他只有id和name兩個屬性
控制台測試代碼這里需要吧student類標記為serializable
Student stu = new Student()
{
ID = 1,
Name = "王寶強"
};
byte[] arr= ObjSerialize.Serialize(stu);
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine(arr[i]);
}
結果如下:
反序列化的測試代碼和結果如下
Student ss= (Student)ObjSerialize.Deserialize(arr);
Console.WriteLine("{0}----{1}",ss.ID,ss.Name);