58.5 텍스트 데이터를 컬렉션 데이터로 가져오기
이번에는 텍스트 파일 데이터를 읽어 컬렉션 형태의 데이터로 읽어 오는 방법을 알아보겠습니다. 다음 내용을 입력한 후 실행해 보세요. 먼저 C 드라이브 Temp 폴더의 Src.txt 파일에 다음 데이터가 있다고 가정하겠습니다. 이 예제를 실행하려면 Src.txt 파일을 만든 후 다음 데이터를 입력하세요.
//C:\Temp\Src.txt
백승수,112,2019-09-01,1234
이세영,114,2020-10-02,2345
한라산,119,2021-11-03,3456
텍스트 데이터를 컬렉션 데이터로 가져오기: TextToCollection.cs
using System;
using System.Collections.Generic;
namespace DotNet
{
public class Record
{
public string Name { get; set; }
public string PhoneNumber { get; set; }
public DateTime BirthDate { get; set; }
public string AuthCode { get; set; }
}
class TextToCollection
{
static void Main()
{
//① 텍스트 파일 읽기
string[] lines =
System.IO.File.ReadAllLines(
@"C:\Temp\src.txt", System.Text.Encoding.Default);
foreach (var line in lines)
{
Console.WriteLine(line);
}
//② 문자열 배열 정보를 컬렉션 형태의 개체에 담기
List<Record> records = new List<Record>();
foreach (var line in lines)
{
string[] splitData = line.Split(',');
records.Add(
new Record
{
Name = splitData[0],
PhoneNumber = splitData[1],
BirthDate = Convert.ToDateTime(splitData[2]),
AuthCode = splitData[3]
});
}
//③ 데이터 하나만 출력하기
Console.WriteLine(records[0]?.Name ?? "데이터가 없습니다.");
}
}
}
실행 결과
백승수,112,2019-09-01,1234 이세영,114,2020-10-02,2345 한라산,119,2021-11-03,3456 백승수
이 예제에서는 구분자로 콤마를 사용하는 텍스트 파일의 데이터를 읽어 List<T> 형태의 C# 컬렉션으로 변환합니다. ①처럼 파일 내용을 File.ReadAllLines() 메서드로 읽은 데이터를 ②에서 List<Record> 형태의 리스트에 담는 작업을 보여 줍니다.
지금은 간단한 텍스트 파일에서 컬렉션으로 데이터를 옮겨 보았는데요. 실제 현업에서는 텍스트 파일, XML 파일, JSON 파일, CSV 파일, 엑셀 파일 등 수많은 데이터 형식을 사용할 수 있습니다. 물론 그때마다 서로 다른 API를 사용해야 합니다.
C#의 API를 사용하면 텍스트 파일 이외에도 이진 파일에 대한 입출력 기능 및 윈도 운영 체제의 레지스트리에 대한 입출력 기능을 구현할 수 있습니다. 이 부분은 마이크로소프트 Docs 온라인 설명서에서 찾아보길 권하며, 이 책에서는 다루지 않겠습니다.
변수, 배열, 클래스, 컬렉션이 아닌 영구적으로 저장할 수 있는 파일에 데이터를 저장하고 읽어 오는 간단한 파일 처리를 학습했습니다. 일단 이 정도로 파일 처리를 다루고, 다음 강의에서 텍스트 파일이 아닌 XML과 JSON 파일을 다루는 부분으로 확장해 나가겠습니다.