C# 텍스트 파일 입출력 개요
C#에서는 StreamReader와 StreamWriter 클래스를 사용하여 텍스트 파일에서 데이터를 읽거나 파일에 데이터를 쓸 수 있습니다. 두 클래스 모두 System.IO 네임스페이스에 포함되어 있으며, using 문과 함께 사용하면 작업이 끝난 후 리소스가 자동으로 해제되므로 안전한 파일 처리가 가능합니다.
텍스트 파일 읽기
다음 예제는 StreamReader를 사용하여 텍스트 파일의 내용을 한 줄씩 읽어 콘솔에 출력하는 방법을 보여줍니다.
using System;
using System.IO;
namespace FileApplication {
class Program {
static void Main(string[] args) {
try {
// 파일에서 읽기 위해 StreamReader 인스턴스를 생성합니다.
// using 문이 블록 종료 시 StreamReader를 자동으로 닫아줍니다.
using (StreamReader sr = new StreamReader("d:/new.txt")) {
string line;
// 파일의 끝에 도달할 때까지 줄을 읽어 화면에 표시합니다.
while ((line = sr.ReadLine()) != null) {
Console.WriteLine(line);
}
}
} catch (Exception e) {
Console.WriteLine("파일을 읽을 수 없습니다:");
Console.WriteLine(e.Message);
}
Console.ReadKey();
}
}
}
핵심 포인트: 파일이 존재하지 않거나 접근 권한이 없는 경우 예외가 발생할 수 있으므로, 반드시 try-catch 블록으로 감싸 오류를 처리하는 것이 좋습니다.
텍스트 파일에 쓰기
다음 예제는 StreamWriter를 사용해 문자열 배열의 내용을 파일에 저장한 후, 다시 StreamReader로 해당 파일을 읽어 결과를 확인하는 전체 과정을 보여줍니다.
예제
using System;
using System.IO;
namespace FileApplication {
class Program {
static void Main(string[] args) {
string[] names = new string[] {"Jack", "Tom"};
// StreamWriter로 파일에 이름을 한 줄씩 기록합니다.
using (StreamWriter sw = new StreamWriter("students.txt")) {
foreach (string s in names) {
sw.WriteLine(s);
}
}
// 파일에서 각 줄을 읽어 화면에 표시합니다.
string line = "";
using (StreamReader sr = new StreamReader("students.txt")) {
while ((line = sr.ReadLine()) != null) {
Console.WriteLine(line);
}
}
Console.ReadKey();
}
}
}
출력 결과
Jack Tom
정리
StreamReader와 StreamWriter를 활용하면 텍스트 파일의 읽기와 쓰기를 손쉽게 구현할 수 있습니다. 특히 using 문을 사용하면 파일 스트림이 자동으로 닫혀 리소스 누수를 방지할 수 있으므로, 파일 입출력 시 항상 함께 사용하는 습관을 들이는 것이 좋습니다.