CSV(Comma-Separated Values) 파일은 데이터를 쉼표로 구분하여 저장하는 텍스트 파일 형식입니다. 주로 표 형태로 데이터를 체계적으로 관리하는 데 사용되며, 많은 기업과 조직이 업무 데이터를 CSV 파일로 저장하고 있습니다.
C#에서는 StreamReader 클래스를 사용해 파일을 다룰 수 있습니다. 이 클래스는 파일을 열고 읽는 기능을 제공하며, CSV 파일을 포함한 다양한 형식의 파일에 대해 여러 작업을 수행할 수 있도록 도와줍니다.
핵심 메서드
- File.OpenRead(): 지정된 경로의 CSV 파일을 읽기 전용으로 엽니다.
- StreamReader.ReadLine(): 파일에서 한 줄씩 내용을 읽어옵니다.
- String.Split(','): 읽어온 문자열을 쉼표를 기준으로 분리하여 배열로 만듭니다.
예제 파일
Data.csv A,B,C
예제 코드
아래 코드는 파일이 존재하는지 먼저 확인한 뒤, CSV 파일을 한 줄씩 읽고 각 줄을 쉼표로 분리하여 List<string>에 저장한 후 화면에 출력합니다.
class Program
{
public static void Main()
{
string filePath = @"C:\Users\Koushik\Desktop\Questions\ConsoleApp\Data.csv";
StreamReader reader = null;
if (File.Exists(filePath))
{
reader = new StreamReader(File.OpenRead(filePath));
List<string> listA = new List<string>();
// 파일의 끝까지 한 줄씩 읽어서 처리
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
foreach (var item in values)
{
listA.Add(item);
}
}
// 저장된 값 출력
foreach (var column1 in listA)
{
Console.WriteLine(column1);
}
}
else
{
Console.WriteLine("파일이 존재하지 않습니다.");
}
Console.ReadLine();
}
}
실행 결과
A B C
추가 팁
- 인코딩 지정: 한글이 포함된 CSV 파일을 다룰 때는
new StreamReader(path, Encoding.UTF8)처럼 인코딩을 명시하면 글자가 깨지는 문제를 방지할 수 있습니다. - using 문 활용:
using블록으로 StreamReader를 감싸면 파일이 자동으로 닫히므로 리소스 누수를 예방할 수 있습니다. - 배열 변환: List에 저장된 값이 필요하면
listA.ToArray()를 호출해 일반 배열(string[])로 손쉽게 변환할 수 있습니다. - 예외 처리: 실무 환경에서는 try-catch 블록으로 파일 입출력 오류를 처리하는 것이 안전합니다.