728x90
프로그래밍에서 파일 입출력(I/O)과 직렬화는 데이터 관리의 핵심 요소입니다. C#에서는 System.IO 네임스페이스와 System.Text.Json을 통해 이러한 작업을 효율적으로 수행할 수 있습니다. 이번 포스트에서는 파일 I/O와 직렬화의 기본 개념과 실용적인 예제를 통해 그 중요성을 알아보겠습니다.
파일 I/O 이해하기
파일 I/O 기본 사항
- 파일 읽기: 기존 파일에서 데이터를 가져오는 작업.
- 파일 쓰기: 새로운 파일을 생성하거나 기존 파일의 내용을 수정하는 작업.
파일 작업을 위한 일반적인 클래스
- FileStream: 파일 작업을 위한 스트림 제공.
- StreamReader: 바이트 스트림에서 문자를 읽음.
- StreamWriter: 바이트 스트림에 문자를 씀.
- 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);
}
}
}
}
직렬화 이해하기
직렬화를 사용하는 이유
- 애플리케이션 실행 간 객체 상태 유지.
- 네트워크를 통해 객체 전송 또는 데이터베이스 저장.
일반적인 직렬화 형식
- 바이너리 형식
- XML 형식
- 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
'프로그래밍 > C#' 카테고리의 다른 글
| C#에서 델리게이트와 이벤트의 이해와 활용 (0) | 2025.08.31 |
|---|---|
| C#에서 대리자와 이벤트의 중요성 및 활용 방법 (0) | 2025.08.31 |
| C# 파일 I/O 스트림의 이해와 활용 (0) | 2025.08.30 |
| C# 파일 I/O의 모든 것: 효율적인 데이터 관리 방법 (0) | 2025.08.29 |
| C#에서의 예외 처리: Finally 블록의 중요성과 활용 (0) | 2025.08.29 |