C#에서 일반 텍스트 파일을 열고 읽으려면 StreamReader 클래스를 사용하면 됩니다. StreamReader는 System.IO 네임스페이스에 포함되어 있으며, 텍스트 파일을 한 줄씩 또는 문자 단위로 손쉽게 읽을 수 있도록 도와주는 대표적인 클래스입니다.
StreamReader로 파일 열기
다음과 같이 파일 경로를 지정하여 StreamReader 객체를 생성하면 해당 파일을 읽기 모드로 열 수 있습니다.
StreamReader sr = new StreamReader("d:/new.txt");파일 내용 출력하기
ReadLine() 메서드를 사용하면 파일을 한 줄씩 읽을 수 있습니다. 파일의 끝에 도달하면 ReadLine()은 null을 반환하므로, while 루프를 활용해 전체 내용을 순차적으로 출력할 수 있습니다.
while ((line = sr.ReadLine()) != null) {
Console.WriteLine(line);
}전체 예제 코드
아래는 예외 처리까지 포함한 완전한 C# 코드 예제입니다. using 문을 사용하면 파일 사용이 끝난 후 리소스가 자동으로 해제되므로 안전하게 파일을 다룰 수 있습니다.
using System;
using System.IO;
namespace FileApplication {
class Program {
static void Main(string[] args) {
try {
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();
}
}
}실행 결과
지정한 경로에 파일이 존재하지 않으면 다음과 같은 예외 메시지가 출력됩니다.
파일을 읽을 수 없습니다: Could not find a part of the path "/home/cg/root/4281363/d:/new.txt".
참고 사항
실무에서는 파일을 열기 전에 File.Exists() 메서드로 파일 존재 여부를 먼저 확인하는 것이 좋습니다. 또한 한글이 포함된 텍스트 파일을 읽을 경우 인코딩 문제가 발생할 수 있으므로, new StreamReader(path, Encoding.UTF8)처럼 인코딩을 명시적으로 지정하는 것을 권장합니다.