[c#] C# 직렬화를 이용한 파일 저장

C#에서 데이터를 파일에 저장하고 나중에 다시 불러오는 작업은 매우 일반적입니다. 이를 위해 C#에서는 직렬화(Serialization)와 파일 입출력을 이용하는 방법을 사용할 수 있습니다.

직렬화(Serialization)

직렬화는 객체를 데이터 스트림으로 변환하여 나중에 동일한 객체를 복원할 수 있는 형식으로 저장하는 프로세스입니다. C#에서는 System.Xml.Serialization 네임스페이스나 System.Runtime.Serialization 네임스페이스를 사용하여 직렬화를 수행할 수 있습니다.

using System;
using System.IO;
using System.Xml.Serialization;

public class Program
{
    public static void Main()
    {
        // 객체 생성
        Person person = new Person { Name = "John Doe", Age = 30 };

        // 직렬화
        XmlSerializer serializer = new XmlSerializer(typeof(Person));
        using (FileStream stream = new FileStream("person.xml", FileMode.Create))
        {
            serializer.Serialize(stream, person);
        }
    }
}

[Serializable]
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

위 예제에서는 Person 클래스를 XML 형식으로 파일에 저장하는 방법을 보여줍니다.

파일 저장

C#에서는 System.IO 네임스페이스를 사용하여 파일에 데이터를 저장할 수 있습니다. 위 예제에서는 FileStream 클래스를 사용하여 파일을 생성하고, XmlSerializer를 사용하여 객체를 XML 파일로 저장하였습니다.

파일 불러오기

이제 저장된 파일을 다시 읽어올 수 있습니다. 다음은 파일을 불러와서 객체를 복원하는 예제입니다.

public static void Main()
{
    // 직렬화된 파일을 역직렬화하여 객체 복원
    XmlSerializer serializer = new XmlSerializer(typeof(Person));
    using (FileStream stream = new FileStream("person.xml", FileMode.Open))
    {
        Person newPerson = (Person)serializer.Deserialize(stream);
        Console.WriteLine($"Name: {newPerson.Name}, Age: {newPerson.Age}");
    }
}

위의 예제에서는 파일로부터 객체를 읽어와서 다시 복원하는 방법을 보여줍니다.

C#에서 직렬화를 통해 파일에 데이터를 저장하는 방법을 학습하였습니다. 이를 통해 객체나 데이터를 파일에 저장하고 나중에 다시 불러올 수 있는 기술을 활용할 수 있습니다.

참고 자료