프로그래밍/C#

C#에서 파일 I/O와 직렬화의 중요성 및 실용적인 활용법

shimdh 2025. 8. 30. 00:08
728x90

프로그래밍에서 파일 입출력(I/O)과 직렬화는 데이터 관리의 핵심 요소입니다. C#에서는 System.IO 네임스페이스와 System.Text.Json을 통해 이러한 작업을 효율적으로 수행할 수 있습니다. 이번 포스트에서는 파일 I/O와 직렬화의 기본 개념과 실용적인 예제를 통해 그 중요성을 알아보겠습니다.

파일 I/O 이해하기

파일 I/O 기본 사항

  • 파일 읽기: 기존 파일에서 데이터를 가져오는 작업.
  • 파일 쓰기: 새로운 파일을 생성하거나 기존 파일의 내용을 수정하는 작업.

파일 작업을 위한 일반적인 클래스

  1. FileStream: 파일 작업을 위한 스트림 제공.
  2. StreamReader: 바이트 스트림에서 문자를 읽음.
  3. StreamWriter: 바이트 스트림에 문자를 씀.
  4. File: 파일 생성, 복사, 삭제, 이동 및 열기 위한 정적 메서드 포함.
728x90

파일 읽기 및 쓰기의 실용적인 예

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string path = "example.txt";

        // 파일에 쓰기
        using (StreamWriter writer = new StreamWriter(path))
        {
            writer.WriteLine("Hello World!");
            writer.WriteLine("이것은 파일 쓰기의 예입니다.");
        }

        // 파일에서 읽기
        using (StreamReader reader = new StreamReader(path))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                Console.WriteLine(line);
            }
        }
    }
}

직렬화 이해하기

직렬화를 사용하는 이유

  • 애플리케이션 실행 간 객체 상태 유지.
  • 네트워크를 통해 객체 전송 또는 데이터베이스 저장.

일반적인 직렬화 형식

  1. 바이너리 형식
  2. XML 형식
  3. JSON 형식

직렬화의 실용적인 예

using System;
using System.IO;
using System.Text.Json;

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

class Program
{
    static void Main()
    {
        Person person = new Person() { Name = "John Doe", Age = 30 };

        // 객체를 JSON 형식으로 직렬화
        string jsonString = JsonSerializer.Serialize(person);

        // 직렬화된 데이터를 파일에 쓰기
        File.WriteAllText("person.json", jsonString);

        // 파일에서 JSON 데이터 읽기
        string readJsonString = File.ReadAllText("person.json");

        // Person 객체로 역직렬화
        Person deserializedPerson = JsonSerializer.Deserialize<Person>(readJsonString);

        Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
    }
}

요약

파일 I/O와 직렬화는 데이터를 효과적으로 관리하고, 사용자 환경 설정 및 로그를 지속적으로 저장할 수 있는 강력한 애플리케이션을 구축하는 데 필수적입니다. C#에서 이러한 개념을 마스터하면, 지속적인 상태 관리가 중요한 실제 애플리케이션을 처리하는 데 필요한 필수 도구를 잘 갖추게 됩니다.

728x90