푸터 콘텐츠로 바로가기
Iron Academy Logo
C# 배우기
C# 배우기

다른 카테고리

C# 파일 읽기 및 쓰기

Tim Corey
24분 34초

C#에서의 파일 입출력(I/O) 작업은 많은 소프트웨어 애플리케이션에서 필수적인 부분으로, 개발자가 파일을 효율적으로 읽고 쓸 수 있도록 해줍니다. 데이터를 저장하든, 애플리케이션 이벤트를 기록하든, 대량의 텍스트 또는 바이너리 데이터를 처리하든, C#은 파일 작업을 위한 강력한 도구를 제공합니다. Tim Corey의 비디오 " C# 데이터 액세스: 텍스트 파일 "에서 그는 텍스트 파일을 데이터 저장 및 검색에 사용하는 방법을 중심으로 이러한 파일 작업에 대한 자세한 설명을 제공합니다. 이 글은 Tim이 영상에서 다룬 핵심 개념과 기법을 요약하여 C#에서의 파일 입출력 작업에 대한 실질적인 통찰력을 제공하는 것을 목표로 합니다.

소개

C#에서 파일 입출력 작업은 텍스트 파일에서 읽고 쓰는 데 필수적입니다. File 클래스는 기존 파일과 상호작용하거나 새 파일을 생성하기 위한 정적 메서드를 제공합니다. StreamReaderStreamWriter 는 파일을 읽고 쓰는 데 일반적으로 사용됩니다. StreamReader 는 파일을 한 줄씩 읽어서 각 텍스트 줄이나 문자열 배열로 접근할 수 있게 해줍니다. 또한 while 루프를 사용하여 대형 파일을 효율적으로 읽을 수 있습니다. StreamWriter 클래스는 파일에 데이터를 쓰기 위해 사용되며, 문자열과 배열을 쓰는 것을 지원합니다. 기존 파일에 텍스트를 추가하거나 전체 파일을 덮어쓸 수 있습니다. WriteLineWriteText 와 같은 메서드를 통해 텍스트 파일 내에서 쉽게 데이터를 조작할 수 있습니다.

이러한 작업은 일반적으로 static void Main 메서드 내에서 수행되며, 여기서 파일 경로를 정의합니다. 예를 들어, 파일 이름을 지정하고 StreamWriter 을 사용하여 단일 문자열이나 전체 문자열 배열을 쓸 수 있습니다. using 문장은 작업 후 파일이 적절히 닫혀 리소스 누수가 발생하지 않도록 합니다. StreamReader 는 또한 파일을 한 줄씩 읽는 데 사용될 수 있으며, 파일이 존재하지 않거나 접근할 수 없는 경우 잠재적인 오류를 관리하기 위해 예외를 처리할 수 있습니다. 이러한 파일 입출력 기능 덕분에 C#은 파일을 효율적이고 효과적으로 다루는 데 탁월한 선택입니다.

Tim은 C#에서 텍스트 파일을 읽고 쓰는 것이 얼마나 간단한지를 강조하면서 주제를 소개합니다. 그는 몇 줄의 코드로 이러한 작업들을 수행할 수 있음을 보여주며, 텍스트 파일이 데이터 저장에 실용적인 선택지가 될 수 있음을 입증합니다.

데모 콘솔 애플리케이션 만들기

Tim은 Visual Studio를 사용하여 "TextFileDataAccessDemo"라는 이름의 새 콘솔 애플리케이션을 만드는 것으로 시작합니다.

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;

namespace TextFileDataAccessDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadLine(); // Keeps the console window open to view the output
        }
    }
}
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;

namespace TextFileDataAccessDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadLine(); // Keeps the console window open to view the output
        }
    }
}

그는 Console.ReadLine 을 사용하여 콘솔 창을 열어두고 사용자들이 출력을 볼 수 있도록 설명합니다.

텍스트 파일에서 읽기

Tim은 File.ReadAllLines 메서드를 사용하여 텍스트 파일을 읽는 방법을 설명합니다. 그는 파일 경로를 처리하는 방법과 이스케이프 문자를 피하기 위해 문자열 리터럴을 사용하는 방법을 보여줍니다.

string filePath = @"C:\demos\test.txt";
List<string> lines = File.ReadAllLines(filePath).ToList();
string filePath = @"C:\demos\test.txt";
List<string> lines = File.ReadAllLines(filePath).ToList();

File.ReadAllLines 메서드는 지정된 파일에서 모든 줄을 읽고 이를 문자열 배열로 반환합니다. 팀은 조작을 쉽게 하기 위해 이 배열을 리스트로 변환합니다.

텍스트 파일에 쓰기

Tim은 File.WriteAllLines 메서드를 사용하여 데이터를 텍스트 파일에 쓰는 방법을 설명합니다. 그는 목록에 새 줄을 추가하고 업데이트된 목록을 파일에 다시 쓰는 방법을 보여줍니다.

lines.Add("Sue,Storm,WWIStorm.com");
File.WriteAllLines(filePath, lines);
lines.Add("Sue,Storm,WWIStorm.com");
File.WriteAllLines(filePath, lines);

이 코드는 목록에 새 항목을 추가하고 전체 목록을 파일에 다시 저장합니다.

데이터 모델을 생성하고 파일에서 데이터를 가져와 채우는 방법

Tim은 텍스트 파일의 각 항목에 대한 데이터 구조를 나타내는 Person 클래스를 만듭니다.

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string URL { get; set; }
}
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string URL { get; set; }
}

그는 파일을 읽어 Person 객체 목록을 채웁니다.

List<Person> people = new List<Person>();
List<string> lines = File.ReadAllLines(filePath).ToList();

foreach (string line in lines)
{
    string[] entries = line.Split(',');
    Person newPerson = new Person
    {
        FirstName = entries[0],
        LastName = entries[1],
        URL = entries[2]
    };
    people.Add(newPerson);
}
List<Person> people = new List<Person>();
List<string> lines = File.ReadAllLines(filePath).ToList();

foreach (string line in lines)
{
    string[] entries = line.Split(',');
    Person newPerson = new Person
    {
        FirstName = entries[0],
        LastName = entries[1],
        URL = entries[2]
    };
    people.Add(newPerson);
}

이 코드는 각 라인을 읽어 콤마로 나누고, 추출된 데이터로 Person 객체를 생성합니다.

문자열 보간

Tim은 C# 6.0의 기능인 문자열 보간을 소개합니다. 이 기능은 변수와 문자열을 결합하는 과정을 간소화합니다. 이 메서드는 문자열 앞에 $ 기호와 중괄호 {} 를 사용하여 문자열 안에 변수를 직접 포함시킵니다.

foreach (var person in people)
{
    Console.WriteLine($"{person.FirstName} {person.LastName}: {person.URL}");
}
foreach (var person in people)
{
    Console.WriteLine($"{person.FirstName} {person.LastName}: {person.URL}");
}

이 문법은 전통적인 + 연산자를 사용한 문자열 연결보다 간결하고 효율적입니다.

C# Read Write File

데이터 유효성 검사

팀은 텍스트 파일에서 데이터를 읽을 때 데이터 유효성 검사의 중요성을 강조합니다. 그는 데이터 구조를 추측하는 것의 위험성을 지적하고 분할된 항목의 길이를 확인하는 것을 권장합니다.

foreach (string line in lines)
{
    string[] entries = line.Split(',');
    if (entries.Length == 3)
    {
        Person newPerson = new Person
        {
            FirstName = entries[0],
            LastName = entries[1],
            URL = entries[2]
        };
        people.Add(newPerson);
    }
    else
    {
        // Handle error
        Console.WriteLine("Invalid data format.");
    }
}
foreach (string line in lines)
{
    string[] entries = line.Split(',');
    if (entries.Length == 3)
    {
        Person newPerson = new Person
        {
            FirstName = entries[0],
            LastName = entries[1],
            URL = entries[2]
        };
        people.Add(newPerson);
    }
    else
    {
        // Handle error
        Console.WriteLine("Invalid data format.");
    }
}

이렇게 하면 항목 수가 올바른 줄만 처리되므로 잠재적인 런타임 오류를 방지할 수 있습니다.

리스트에 객체 추가하기

Tim은 새 객체를 리스트에 추가하는 방법을 보여줍니다. 그는 Person 클래스의 익명 인스턴스를 사용하여 새 사람을 리스트에 추가합니다.

people.Add(new Person { FirstName = "Greg", LastName = "Jones", URL = "WOWT.com" });
people.Add(new Person { FirstName = "Greg", LastName = "Jones", URL = "WOWT.com" });

이것은 새 Person 객체를 생성하고 초기화하며, 이어 people 리스트에 추가합니다.

데이터를 텍스트 파일에 다시 쓰는 방법

Tim은 Person 객체 목록을 텍스트 파일로 다시 쓰는 방법을 설명합니다. 그는 Person 객체 목록을 문자열 목록으로 변환하여, 각 문자열이 파일의 한 줄을 나타냅니다.

List<string> output = new List<string>();
foreach (var person in people)
{
    output.Add($"{person.FirstName},{person.LastName},{person.URL}");
}
File.WriteAllLines(filePath, output);
List<string> output = new List<string>();
foreach (var person in people)
{
    output.Add($"{person.FirstName},{person.LastName},{person.URL}");
}
File.WriteAllLines(filePath, output);

이 코드는 people 리스트를 반복하여 각 Person 객체에 대한 CSV 문자열을 생성하고 문자열 목록을 파일에 씁니다.

결론

Tim Corey의 C# 파일 입출력 작업에 대한 자세한 가이드는 텍스트 파일 읽기 및 쓰기에 대한 실질적인 정보를 제공합니다. 그의 사례를 따르면 개발자들은 텍스트 파일을 사용하여 데이터를 효과적으로 관리하고 견고한 데이터 저장 솔루션을 구현할 수 있습니다. 심층적인 이해와 실질적인 학습 경험을 위해, 팀 코리의 영상을 시청하시기를 강력히 추천합니다. 그는 실제 사례를 통해 이러한 개념들을 더욱 자세히 설명합니다.

Hero Worlddot related to C# 파일 읽기 및 쓰기
Hero Affiliate related to C# 파일 읽기 및 쓰기

사랑하는 것을 공유하여 더 많은 수익을 얻으세요

당신은 .NET, C#, Java, Python, 또는 Node.js를 다루는 개발자를 위한 콘텐츠를 만드나요? 당신의 전문성을 추가 수입으로 전환하세요!

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해