|
Program.cs |
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace Test { class Program { static void Main(string[] args) { School sc = new School("선문대학교"); sc.Run(); } } }
|
Stu.cs |
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace Test [Serializable] class Stu { private string Name; private int Age; private string Major;
public string name { get { return Name; } set { if(value == string.Empty) { return; } Name = value; } }
public int age { get { return Age; } set { Age = value; } }
public string major { get { return Major; } set { Major = major; } }
public Stu(string _name, int _age, string _major) { Name = _name; Age = _age; Major = _major; }
public override string ToString() { if(this.Name == null) { return string.Empty; } return string.Format(" 이름 : {0} 나이 : {1} 전공 : {2}",Name,Age,Major); } } } |
- 파일로 저장하기
School.cs |
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 Test { class School { ArrayList S_arr = new ArrayList();
private string SchoolName; public string schoolname { get { return SchoolName; } set { if(value == string.Empty) { return; } SchoolName = value; } }
public School(string sname) { SchoolName = sname; }
public override string ToString() { return string.Format(" 학교명 : {0} 학생수 : {1}",SchoolName,1); }
internal void Run() { CreateStu(); Serialize(); }
private void Serialize() { Stream stm = File.Open("선문비트.txt", FileMode.Create, FileAccess.ReadWrite); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(stm, S_arr); //BinaryFormatter의 Serialize 메서드를 사용하여 객체 직렬화 //Stream 객체를 이용하여 저장
stm.Close(); stm = null; bf = null; S_arr = null; }
private void CreateStu() { S_arr.Add(new Stu("김대근", 25, "정보")); S_arr.Add(new Stu("유근선", 25, "컴정")); S_arr.Add(new Stu("이상진", 26, "수학")); S_arr.Add(new Stu("김윤환", 26, "언광")); S_arr.Add(new Stu("주은호", 27, "경영")); } } }
|
Serialize 결과 |
|
- 저장한 파일을 열어 역직렬화 하는 코드
School.cs |
private void DeSerialize() { Stream stm = File.Open("선문비트.txt", FileMode.Open, FileAccess.Read); BinaryFormatter bf = new BinaryFormatter();
//객체 불러오기 S_arr = (ArrayList)bf.Deserialize(stm);
foreach(Stu s in S_arr) { Console.WriteLine(s); } stm.Close(); } |
DeSerialize 결과 |
|
Ex> 객체를 XML 파일로 저장하기
School.cs – Run에 XmlSerialize 라는 함수를 추가 |
private void XmlSerialize() { Stream stm = File.Create("선문비트.xml"); XmlSerializer XmlFormat = new XmlSerializer(typeof(Stu), "Test"); for (int i = 0; i < S_arr.Count; i++) XmlFormat.Serialize(stm, S_arr[i]); } |
결과 |
|
파일이 생성되고 실행 하면 아래와 같이 보인다. 이렇게 보이는 정확한 이유는 잘 모르겠다. 하지만 이 페이지를 소스보기 하면 아래와 같이 제대로 나온다. |
|