반응형
C# 파일 입출력과 JSON/XML 처리
C#에서 데이터를 처리할 때 파일 입출력(File I/O)과 JSON/XML 직렬화/역직렬화는 매우 중요한 기술입니다.
로컬 파일 저장, 서버 API 연동, 데이터 직렬화 등을 효율적으로 처리할 수 있으며, 실무 프로젝트에서 자주 활용됩니다.
1. 기본 파일 입출력
C#에서는 FileStream, StreamReader, StreamWriter를 사용하여 파일을 읽고 쓸 수 있습니다.
// 파일 쓰기
using (StreamWriter writer = new StreamWriter("data.txt")) {
writer.WriteLine("Hello, C# File I/O!");
}
// 파일 읽기
using (StreamReader reader = new StreamReader("data.txt")) {
string line = reader.ReadLine();
Console.WriteLine(line); // 출력: Hello, C# File I/O!
}
2. JSON 직렬화와 역직렬화
JSON은 서버와 데이터를 주고받거나 파일로 저장할 때 많이 사용됩니다.
C#에서는 System.Text.Json 또는 Newtonsoft.Json을 사용하여 직렬화/역직렬화를 수행합니다.
using System;
using System.Text.Json;
class Person {
public string Name { get; set; }
public int Age { get; set; }
}
Person person = new Person { Name = "Alice", Age = 25 };
// JSON 직렬화
string jsonString = JsonSerializer.Serialize(person);
Console.WriteLine(jsonString); // {"Name":"Alice","Age":25}
// JSON 역직렬화
Person p = JsonSerializer.Deserialize<Person>(jsonString);
Console.WriteLine(p.Name); // Alice
3. XML 직렬화와 역직렬화
XML은 JSON과 달리 계층 구조와 데이터 타입을 명시적으로 표현할 수 있어, 레거시 시스템과 연동할 때 유용합니다.
using System.Xml.Serialization;
using System.IO;
XmlSerializer serializer = new XmlSerializer(typeof(Person));
// XML 파일 저장
using (FileStream fs = new FileStream("person.xml", FileMode.Create)) {
serializer.Serialize(fs, person);
}
// XML 파일 읽기
using (FileStream fs = new FileStream("person.xml", FileMode.Open)) {
Person p2 = (Person)serializer.Deserialize(fs);
Console.WriteLine(p2.Name); // Alice
}
4. Web API와 파일 입출력 연동
실제 프로젝트에서는 파일과 Web API를 연계하여 데이터를 가져오고 저장하는 경우가 많습니다.
using System.Net.Http;
using System.Threading.Tasks;
async Task SaveTodoAsync() {
using (HttpClient client = new HttpClient()) {
string url = "https://jsonplaceholder.typicode.com/todos/1";
string json = await client.GetStringAsync(url);
// 파일에 저장
await File.WriteAllTextAsync("todo.json", json);
Console.WriteLine("API 데이터 저장 완료");
}
}
await SaveTodoAsync();
5. 실무 활용 팁
- 파일 인코딩 주의: UTF-8, UTF-16 등 환경에 맞게 지정
- 비동기 입출력:
ReadAsync
,WriteAsync
로 UI/서버 블로킹 방지 - 예외 처리: 파일 존재 여부, 접근 권한 예외 처리 필수
- 데이터 포맷 선택: JSON → 서버 API, XML → 레거시 시스템 연동
- 파일 경로 관리: 상대 경로 vs 절대 경로, 프로젝트 배포 시 주의
마무리
C# 파일 입출력과 JSON/XML 처리는 데이터 저장, 불러오기, 서버 API 연동 등 다양한 실무 시나리오에서 필수 기술입니다. FileStream, StreamReader/Writer로 기본 파일 입출력을 수행하고, JSON과 XML 직렬화/역직렬화를 활용하면 데이터 처리 코드를 간결하고 효율적으로 작성할 수 있습니다. 또한 Web API 연동과 비동기 파일 입출력을 결합하면, 실무 프로젝트에서 성능과 안정성을 동시에 확보할 수 있습니다.
반응형
'c#' 카테고리의 다른 글
C# 비동기 프로그래밍 : PLINQ, CancellationToken, 고급 Task 제어 (0) | 2025.09.21 |
---|---|
C# 비동기 프로그래밍: async/await와 Task 활용 (0) | 2025.09.21 |
C# LINQ 활용법 – 컬렉션 처리와 데이터 쿼리 (0) | 2025.09.21 |
C# WPF/WinForms GUI 개발: MVVM, 데이터 바인딩, 커스텀 컨트롤 활용 (0) | 2025.09.18 |
C# Entity Framework(Core)와 데이터베이스 연동 (1) | 2025.09.18 |