序列化和反序列化的一个简单练习
2016-05-04 22:05
260 查看
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
//运行的时候,序列化--格式化器里面的-2进制类命名空间
namespace 对象的序列化与反序列化
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Student student = new Student()
{
Name = textBox1.Text.Trim(),
Age = Convert.ToInt32(textBox2.Text.Trim()),
Birthday = Convert.ToDateTime(textBox3.Text)
};
FileStream fs = new FileStream(@"D:\用户目录\Desktop\2.txt", FileMode.Create);
BinaryFormatter bf = new BinaryFormatter(); //创建2进制格式化器
bf.Serialize(fs,student);
fs.Close();
//StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
//sw.WriteLine(student.Name);
//sw.WriteLine(student.Age);
//sw.WriteLine(student.Birthday);
//sw.Close();
//fs.Close();
//MessageBox.Show("成功写入");
}
private void button2_Click(object sender, EventArgs e)
{
FileStream fs = new FileStream(@"D:\用户目录\Desktop\2.txt", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();//定义了一个二进制格式化器
Student student = (Student)bf.Deserialize(fs);//将文件对象fs的用二进制格式化器反序列化;因为反序列化之后的对象是Object类型的,在这里将他强制类型转换为Student类型
textBox1.Text = student.Name;
textBox2.Text = student.Age.ToString();
textBox4.Text = student.Birthday.ToString();
fs.Close();
// StreamReader sr = new StreamReader(fs);
//textBox1.Text=sr.ReadLine();
//textBox2.Text = sr.ReadLine();
//textBox3.Text = sr.ReadLine();
// sr.Close();
// fs.Close();
}
}
}
---------------------------------添加类 的代码-------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 对象的序列化与反序列化
{
[Serializable]
class Student
{
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
public DateTime Birthday
{
get;
set;
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
//运行的时候,序列化--格式化器里面的-2进制类命名空间
namespace 对象的序列化与反序列化
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Student student = new Student()
{
Name = textBox1.Text.Trim(),
Age = Convert.ToInt32(textBox2.Text.Trim()),
Birthday = Convert.ToDateTime(textBox3.Text)
};
FileStream fs = new FileStream(@"D:\用户目录\Desktop\2.txt", FileMode.Create);
BinaryFormatter bf = new BinaryFormatter(); //创建2进制格式化器
bf.Serialize(fs,student);
fs.Close();
//StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
//sw.WriteLine(student.Name);
//sw.WriteLine(student.Age);
//sw.WriteLine(student.Birthday);
//sw.Close();
//fs.Close();
//MessageBox.Show("成功写入");
}
private void button2_Click(object sender, EventArgs e)
{
FileStream fs = new FileStream(@"D:\用户目录\Desktop\2.txt", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();//定义了一个二进制格式化器
Student student = (Student)bf.Deserialize(fs);//将文件对象fs的用二进制格式化器反序列化;因为反序列化之后的对象是Object类型的,在这里将他强制类型转换为Student类型
textBox1.Text = student.Name;
textBox2.Text = student.Age.ToString();
textBox4.Text = student.Birthday.ToString();
fs.Close();
// StreamReader sr = new StreamReader(fs);
//textBox1.Text=sr.ReadLine();
//textBox2.Text = sr.ReadLine();
//textBox3.Text = sr.ReadLine();
// sr.Close();
// fs.Close();
}
}
}
---------------------------------添加类 的代码-------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 对象的序列化与反序列化
{
[Serializable]
class Student
{
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
public DateTime Birthday
{
get;
set;
}
}
}
相关文章推荐
- leetcode-- Partition List
- SSH终端空闲,连接断开问题
- NOIP1998--拼数(伤心的字符串)
- Linux设备模型(7)_Class
- mysql数据库备份
- Spring Mvc那点事---(1)开发环境搭建
- 面试题--JAVA多线程和并发基础面试问答
- 面试题32:在从1到n的正数中1出现的次数
- 剑指offer:对称的二叉树
- Java udp 键盘录入方式接收数据
- JAVA面向对象API—集合类的专用遍历方法
- 周总结
- Android客户端支付功能,只用第三方支付接口
- JSP中的遗留问题
- 【剑指Offer】替换空格
- Android倒计时定时器CountDownTimer的用法
- C++ 模板详解(二)
- Window XP驱动开发(二十二) 驱动程序的同步处理
- 利用curand的host API生成均匀分布的随机数
- 荷兰国旗问题