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 파일을 다루는 부분으로 확장해 나가겠습니다.