더북(TheBook)

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

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.