C# 텍스트 파일 읽기 : txt 파일을 문자열로 읽는 여러가지 방법

C#에서 텍스트 파일을 읽는 것은 프로그래밍 작업 중 매우 일반적인 작업입니다. 이를 위해 .NET 프레임워크에서는 여러 가지 방법을 제공합니다. 이번 포스팅에서는 C#에서 텍스트 파일을 읽는 여러 가지 방법에 대해 알아보겠습니다.

File.ReadLines를 사용한 방법

File.ReadLines 메서드는 파일의 각 라인을 읽어들여 IEnumerable 형태로 반환합니다. 이 방법은 파일을 한 줄씩 읽기 때문에 메모리 사용량이 적고 대용량 파일에 적합합니다.

File.ReadLines는 파일의 모든 줄의 IEnumerable을 반환합니다. 반복이 끝나면 파일을 닫습니다. 이 방법은 데이터를 문자열 또는 문자열 배열로 반환하는 방법보다 훨씬 덜 자원을 소비합니다.

using System.Text;

var path = "readme.txt";

var enumLines = File.ReadLines(path, Encoding.UTF8);

foreach (var line in enumLines)
{
    Console.WriteLine(line);
}

이 예제에서는 foreach 루프를 사용하여 줄의 열거를 통해 내용을 한 줄씩 출력합니다.

File.ReadAllLines를 사용한 방법

File.ReadAllLines 메서드는 파일의 모든 라인을 한 번에 읽어들여 string 배열로 반환합니다. 이 방법은 작은 크기의 파일을 처리할 때 유용하지만, 대용량 파일에는 메모리 부담이 있을 수 있습니다.

using System.Text;

var path = "readme.txt";

string[] lines = File.ReadAllLines(path, Encoding.UTF8);

foreach (string line in lines)
{
    Console.WriteLine(line);
}

readme.txt 파일의 내용이 읽혀지고 File.ReadAllLines 메서드를 사용하여 콘솔에 인쇄됩니다.

참고: 큰 파일의 경우 File.ReadAllLines보다 File.ReadLines 로 한줄씩 처리하는것이 효율적입니다.

File.ReadAllText을 사용한 방법

File.ReadAllText 메서드는 파일의 전체 내용을 문자열로 읽어들입니다. 이 방법은 파일 크기에 상관없이 간편하게 파일 내용을 읽을 수 있지만, 대용량 파일에는 적합하지 않을 수 있습니다.

File.ReadAllText 메서드는 텍스트 파일을 열고 파일의 모든 줄을 문자열로 읽은 다음 파일을 닫습니다.

참고: File.ReadAllText 메서드는 큰 파일에 사용하지 않아야 합니다. 단순한 해결책에만 적합합니다.

using System.Text;

var path = "readme.txt";

string content = File.ReadAllText(path, Encoding.UTF8);
Console.WriteLine(content);

이 예제는 readme.txt 파일의 내용을 읽고 콘솔에 출력합니다.

StreamReader를 사용한 방법

StreamReader 클래스는 파일을 특정 인코딩으로 읽어들일 수 있는 기능을 제공합니다. 이를 통해 파일을 한 줄씩 읽거나 전체 내용을 한 번에 읽어들일 수 있습니다.
StreamReader는 특정 인코딩된 문자 입력을 위해 설계되었습니다. 표준 텍스트 파일에서 정보 줄을 읽는 데 사용됩니다.
ReadToEnd 메서드는 스트림의 현재 위치에서 끝까지 모든 문자를 읽습니다.

using System.Text;

var path = "readme.txt";

using var fs = new FileStream(path, FileMode.Open, FileAccess.Read);
using var sr = new StreamReader(fs, Encoding.UTF8);

string content = sr.ReadToEnd();

Console.WriteLine(content);

이 예제는 StreamReader의 ReadToEnd 메서드로 파일을 읽습니다.

File.OpenRead를 사용하는 방법

FileStream을 만들기 위한 File.OpenRead 도우미 메서드가 있습니다.

using System.Text;

var path = "readme.txt";

using var fs = File.OpenRead(path);
using var sr = new StreamReader(fs, Encoding.UTF8);

string content = sr.ReadToEnd();

Console.WriteLine(content);

이 예제는 File.OpenRead로 FileStream을 만들고 해당 스트림을 StreamReader로 전달하고 ReadToEnd로 텍스트를 읽습니다.

File.OpenText를 사용한 방법

File.OpenText 메서드는 StreamReader를 만들어서 파일을 읽어들입니다. 이 방법은 파일을 텍스트 모드로 열기 때문에 텍스트 파일을 처리할 때 유용합니다.

File.OpenText 메서드는 기존의 UTF-8로 인코딩된 텍스트 파일을 읽기 위해 엽니다. 이는 StreamReader와 빠르게 작업하기 위한 도우미 메서드입니다.

using System.Text;

var path = "readme.txt";

using StreamReader sr = File.OpenText(path);
string content = sr.ReadToEnd();



Console.WriteLine(content);

이 예제는 File.OpenText로 텍스트 파일을 열고 ReadToEnd로 내용을 읽습니다.

StreamReader의 ReadToEndAsync를 사용하여 비동기적으로 읽기

ReadToEndAsync 메서드는 현재 위치에서 스트림 끝까지 모든 문자를 비동기적으로 읽고 하나의 문자열로 반환합니다.

using System.Text;

var path = "readme.txt";

using var fs = new FileStream(path, FileMode.Open, FileAccess.Read);
using var sr = new StreamReader(fs, Encoding.UTF8);

string content = await sr.ReadToEndAsync();
Console.WriteLine(content);

다음 예제에서는 텍스트 파일을 비동기적으로 읽습니다.

string content = await sr.ReadToEndAsync();

await 연산자는 비동기적인 메서드에서 작업이 완료될 때까지 메서드의 실행을 일시 중지시킵니다.

결론

이렇게 여러 가지 방법으로 C#에서 텍스트 파일을 읽을 수 있습니다. 각 방법은 사용하고자 하는 상황에 따라 선택할 수 있으며, 파일 크기와 성능 요구사항에 맞게 선택해야 합니다.

Leave a Comment