c#

C# 파일 입출력과 JSON/XML 처리

개발에대해 2025. 9. 21. 23:03
반응형

 

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 연동과 비동기 파일 입출력을 결합하면, 실무 프로젝트에서 성능과 안정성을 동시에 확보할 수 있습니다.

반응형