C# 간단하게 파일 전체를 읽는 방법

File 클래스는 여러 메소드들을 제공합니다. 읽기, 쓰기, 삭제, 줄단위 읽기 등등.
그중에서도 오늘은 파일 전체를 읽어서 변수에 저장하는 방법에 대하서 알아보도록 하겠습니다.
또한 변수 전체를 파일로 저장하는 방법도 곁들여 보여드리도록 하겠습니다.

사실 너무나 간단해서 딱히 보여드리기가 민망합니다. 함수는 2개입니다.

  • File.ReadAllText
  • File.ReadAllBytes

C# File.ReadAllText

텍스트 파일을 열고 파일 내의 모든 텍스트를 문자열로 읽은 다음 파일을 닫습니다. 이 메서드는 매우 큰 파일에 사용하지 않는 것이 좋습니다.
C# 언어에서 File.ReadAllText 메서드는 텍스트 파일을 읽고 그 내용을 문자열로 저장하는 데 사용됩니다. 이것은 파일을 열고 그 안의 모든 텍스트를 읽어와서 메모리에 문자열로 저장한 다음 파일을 닫습니다. File.ReadAllText를 사용하여 텍스트 파일을 읽을 때 주의해야 할 몇 가지 사항이 있습니다.

텍스트 파일 읽기 예제

아래의 예제를 통해 File.ReadAllText 메서드를 이해해 보겠습니다.

// Program.cs
var path = "words.txt";

string readText = File.ReadAllText(path);
Console.WriteLine(readText);

이 예제는 한 번에 전체 텍스트를 문자열로 읽습니다.

C# File.ReadAllBytes

바이너리 파일을 열고 파일 내용을 바이트 배열로 읽은 다음 파일을 닫습니다.
File.ReadAllBytes 메서드는 바이너리 파일을 읽어와서 파일 내용을 바이트 배열로 저장하는 데 사용됩니다. 이 메서드는 파일을 열고 내용을 바이트 배열로 읽어와서 메모리에 저장한 다음 파일을 닫습니다. 이 메서드를 사용하여 바이너리 파일을 읽을 때 주의해야 할 몇 가지 사항이 있습니다.

바이너리 파일 읽기 예제

아래의 예제는 File.ReadAllBytes 메서드를 사용하여 바이너리 파일을 읽는 방법을 보여줍니다.

// Program.cs
var path = "test.ico";
byte[] data = File.ReadAllBytes(path);

int i = 0;

foreach (byte c in data)
{
    Console.Write("{0:X2} ", c);
    i++;

    if (i % 10 == 0)
    {
        Console.WriteLine();
    }
}

이 예제는 바이너리 파일을 읽고 데이터를 16진수 형식으로 콘솔에 출력합니다.

output
EF BB BF 3C 3F 78 6D 6C 20 76
65 72 73 69 6F 6E 3D 22 31 2E
30 22 20 65 6E 63 6F 64 69 6E
67 3D 22 75 74 66 2D 38 22 20
3F 3E 0D 0A 3C 63 6F 6E 66 69
67 75 72 61 74 69 6F 6E 3E 0D
0A 20 20 20 20 3C 73 74 61 72
74 75 70 3E 20 0D 0A 20 20 20

C# 쓰기 메소드들

File.WriteAllLines 메서드

File.WriteAllLines 메서드는 새 파일을 생성하고 하나 이상의 문자열을 파일에 작성한 다음 파일을 닫습니다. 아래는 File.WriteAllLines를 사용한 예제 코드입니다:

using System.IO;
using System.Text;

var path = "words.txt";

string[] data = { "sky", "cloud", "falcon", "hawk" };
File.WriteAllLines(path, data, Encoding.UTF8);

Console.WriteLine("데이터가 작성되었습니다.");

File.WriteAllBytes 메서드

File.WriteAllBytes 메서드는 새 파일을 생성하고 지정된 바이트 배열을 파일에 작성한 다음 파일을 닫습니다. 아래는 File.WriteAllBytes를 사용한 예제 코드입니다:

using System.IO;
using System.Text;

var path = "words.txt";

var text = "falcon\nhawk\nforest\ncloud\nsky";
byte[] data = Encoding.UTF8.GetBytes(text);

File.WriteAllBytes(path, data);

Console.WriteLine("데이터가 작성되었습니다.");

File.AppendText 메서드

File.AppendText 메서드는 UTF-8로 인코딩된 텍스트를 기존 파일에 추가하거나 지정된 파일이 없으면 새 파일을 만듭니다. 아래는 File.AppendText를 사용한 예제 코드입니다:

using System.IO;

var path = "words.txt";

using StreamWriter sw = File.AppendText(path);

sw.WriteLine("sky");
sw.WriteLine("lake");

File.AppendAllText 메서드

File.AppendAllText 메서드는 지정된 문자열을 파일에 추가하며 파일이 존재하지 않으면 파일을 생성합니다. 아래는 File.AppendAllText를 사용한 예제 코드입니다:

using System.IO;

var path = "words.txt";
var contents = "armour\nsword\narrow\n";

File.AppendAllText(path, contents);

Console.WriteLine("텍스트가 파일에 추가되었습니다.");

File.AppendAllLines 메서드

File.AppendAllLines 메서드는 파일에 줄을 추가한 다음 파일을 닫습니다. 아래는 File.AppendAllLines를 사용한 예제 코드입니다:

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

var path = "words.txt";
var data = new List<string> { "brown", "blue", "khaki" };

File.AppendAllLines(path, data);

Console.WriteLine("데이터가 파일에 작성되었습니다.");

그외의 File 관련 함수들

간단히 사용하는 파일 관련 클래스로 정적 클래스인 File 클래스 가 있고 정적이 아닌 인스턴스 클래스는 FileInfo 클래스가 있습니다. 다음에 사용법들이 자세하게 기록되어 있습니다.

마치며

C#에서 File.ReadAllText와 File.ReadAllBytes 메서드를 사용하여 텍스트 파일과 바이너리 파일을 읽는 방법을 배웠습니다. 이러한 메서드를 올바르게 활용하면 파일에서 데이터를 효율적으로 읽어올 수 있습니다. 그러나 큰 파일을 처리할 때는 주의해야 합니다. 파일 크기에 따라 메모리 사용량이 크게 증가할 수 있으므로 메모리 관리에 유의해야 합니다.

Leave a Comment