StreamReader와 StreamWriter는 파일 입출력에서 자주 사용하는 클래스입니다. 기본적인 사용법 외에, 다양한 옵션과 고급 기능을 활용하면 더 효과적인 파일 처리 프로그램을 작성할 수 있습니다.
1. StreamReader의 고급 활용
StreamReader는 텍스트 파일을 읽을 때 사용합니다. 기본 생성자 외에, 인코딩 지정, 버퍼 크기 조절, 비동기 읽기 등을 활용할 수 있습니다.
using System.IO;
using System.Text;
string path = "example.txt";
// 인코딩과 버퍼 크기 지정
using(var reader = new StreamReader(path, Encoding.UTF8, detectEncodingFromByteOrderMarks: true, bufferSize: 4096))
{
string line;
while((line = reader.ReadLine()) != null)
{
// 처리 로직
Console.WriteLine(line);
}
}
// 비동기 읽기 예제
async Task ReadFileAsync(string filePath)
{
using var reader = new StreamReader(filePath);
string content = await reader.ReadToEndAsync();
Console.WriteLine(content);
}
2. StreamWriter의 고급 활용
StreamWriter는 텍스트 파일에 쓰기 위해 사용합니다. 생성자에서 인코딩과 append 옵션을 조정하고, AutoFlush 기능으로 성능을 조절할 수 있습니다.
string outputPath = "output.txt";
// 기존 파일에 내용 추가 (append 옵션 true)
using(var writer = new StreamWriter(outputPath, append: true, encoding: Encoding.UTF8))
{
writer.WriteLine("새로운 내용 추가합니다.");
writer.Flush(); // 버퍼 강제 비우기
}
// AutoFlush 사용 예제
using(var writer = new StreamWriter(outputPath))
{
writer.AutoFlush = true; // 매 번 쓰기 후 자동으로 버퍼를 비웁니다
writer.WriteLine("즉시 파일에 기록됩니다.");
}
3. 유용한 팁
- using 구문을 활용해 리소스 누수를 방지합니다.
- 인코딩을 명확히 지정해 다양한 환경에서 호환성을 보장합니다.
- 비동기 메서드를 사용해 UI 쓰레드 차단을 피합니다.
- 버퍼 크기를 조절하면 큰 파일 읽기/쓰기 성능 향상이 가능합니다.
이처럼 StreamReader와 StreamWriter의 고급 기능을 적절히 활용하면 안정적이고 효율적인 파일 입출력 프로그램을 작성할 수 있습니다.
'C#' 카테고리의 다른 글
| C# HttpClient에서 다중 요청 병렬 처리 구현 (0) | 2026.07.07 |
|---|---|
| C# Stopwatch를 활용한 코드 블록별 성능 분석 (0) | 2026.07.03 |
| C# 메서드 Attribute 기반 캐싱 구현 (1) | 2026.07.02 |
| C# 애플리케이션 도메인(AppDomain) 관리와 활용 (0) | 2026.07.02 |
| C# ConcurrentDictionary를 이용한 안전한 데이터 공유 (1) | 2026.07.01 |