题记:以前一直不知道别人应用程序中的那些db,dat文件是怎么形成的~~后缀虽然不重要。但是里面的内容是如何产生的当时确实很茫然,今天偶然看到了c#针对序列化文件操作,才恍然大悟~原来这样也行!嘿嘿~~以后自己的程序里也能使用类似的方式保存不想让用户知道的数据了。。不用羡慕别人啦~~、
现把代码贴出如下~留个脚印,以备后用!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace 序列化测试
{
[Serializable]
public class Book
{//这个便是要序列化的类了 序列化,我所可以利用的就是将此类的字段、属性、方法等序列化到一个文件中,以备后用~如果某个字段或者属性、方法不需要序列化 则在前加上[NonSerialized]便可
public string t1, t2, t3;
[NonSerialized]
public string str1;
public Book(string test1, string test2, string test3)
{
t1 = test1;
t2 = test2;
t3 = test3;
}
public string Test()
{
return "this is the test!";
}
}
public class BinarySerialize
{
static void Main()
{
Book book = new Book("徐坤平", "梁庆泉", "曾涛");
using (FileStream fs = new FileStream(@"c:\book.ddee"/*这里就是自定义文件了,其后缀名可以自己定义的咯*/, FileMode.Create))
{
BinaryFormatter formatter = new BinaryFormatter();//以二进制格式序列化对象
formatter.Serialize(fs, book);
}
Console.WriteLine("序列化成功!");
//以下是反序列化了~~
book = null;
using (FileStream fs = new FileStream(@"C:\book.ddee", FileMode.Open))
{
BinaryFormatter formatter = new BinaryFormatter();
book = (Book)formatter.Deserialize(fs); //请注意,这里返回的是将反序列化后的结果~其实可以理解为c语言中的结构体保存~忽忽~~
}
//打印效果
Console.WriteLine("Book.t1=" + book.t1);
Console.WriteLine("Book.t2=" + book.t2);
Console.WriteLine("Book.t3=" + book.t3);
Console.WriteLine(book.Test());
Console.Read();
}
}
}