텍스트 파일에 쓰는 방법(C# 프로그래밍 가이드)

이 문서에는 파일에 텍스트를 쓰는 다양한 방법을 보여 주는 몇 가지 예제가 있습니다. 처음 두 예제에서는 System.IO.File 클래스의 정적 편의 메서드를 사용하여 IEnumerable<string>의 각 요소와 string을 텍스트 파일에 씁니다. 세 번째 예제에서는 파일에 쓸 때 각 줄을 개별적으로 처리해야 하는 경우 파일에 텍스트를 추가하는 방법을 보여 줍니다. 처음 세 예제에서는 파일의 모든 기존 콘텐츠를 덮어씁니다. 마지막 예제에서는 기존 파일에 텍스트를 추가하는 방법을 보여 줍니다.

이 예에서는 파일에 모든 문자열 리터럴을 작성합니다. 파일에 작성된 텍스트의 서식을 지정하려면 Format 메서드 또는 C# 문자열 보간 기능을 사용합니다.

파일에 문자열 컬렉션 쓰기

class WriteAllLines
{
    public static async Task ExampleAsync()
    {
        string[] lines =
        {
            "First line", "Second line", "Third line" 
        };

        await File.WriteAllLinesAsync("WriteLines.txt", lines);
    }
}

이전 소스 코드 예제는 다음과 같습니다.

  • 세 개 값이 있는 문자열 배열을 인스턴스화합니다.

  • 다음과 같은 File.WriteAllLinesAsync 호출을 기다립니다.

    • 파일 이름 WriteLines.txt를 비동기적으로 만듭니다. 파일이 이미 있으면 덮어씁니다.
    • 지정된 줄을 파일에 씁니다.
    • 파일을 닫아 필요에 따라 자동으로 플러시하고 삭제합니다.

파일에 하나의 문자열 쓰기

class WriteAllText
{
    public static async Task ExampleAsync()
    {
        string text =
            "A class is the most powerful data type in C#. Like a structure, " +
            "a class defines the data and behavior of the data type. ";

        await File.WriteAllTextAsync("WriteText.txt", text);
    }
}

이전 소스 코드 예제는 다음과 같습니다.

  • 할당된 문자열 리터럴이 제공된 문자열을 인스턴스화합니다.

  • 다음과 같은 File.WriteAllTextAsync 호출을 기다립니다.

    • 파일 이름 WriteText.txt를 비동기적으로 만듭니다. 파일이 이미 있으면 덮어씁니다.
    • 지정된 텍스트를 파일에 씁니다.
    • 파일을 닫아 필요에 따라 자동으로 플러시하고 삭제합니다.

파일에 배열에서 선택한 문자열 쓰기

class StreamWriterOne
{
    public static async Task ExampleAsync()
    {
        string[] lines = { "First line", "Second line", "Third line" };
        using StreamWriter file = new("WriteLines2.txt");

        foreach (string line in lines)
        {
            if (!line.Contains("Second"))
            {
                await file.WriteLineAsync(line);
            }
        }
    }
}

이전 소스 코드 예제는 다음과 같습니다.

  • 세 개 값이 있는 문자열 배열을 인스턴스화합니다.
  • WriteLines2.txt의 파일 경로를 using 선언으로 사용하여 StreamWriter를 인스턴스화합니다.
  • 모든 줄을 반복합니다.
  • 줄에 "Second"가 포함되지 않은 경우 해당 줄을 파일에 쓰는 StreamWriter.WriteLineAsync(String) 호출을 조건에 따라 기다립니다.

기존 파일에 텍스트 추가

class StreamWriterTwo
{
    public static async Task ExampleAsync()
    {
        using StreamWriter file = new("WriteLines2.txt", append: true);
        await file.WriteLineAsync("Fourth line");
    }
}

이전 소스 코드 예제는 다음과 같습니다.

  • 세 개 값이 있는 문자열 배열을 인스턴스화합니다.
  • WriteLines2.txt의 파일 경로를 using 선언으로 사용하여 StreamWriter를 인스턴스화하고 추가할 true를 전달합니다.
  • 문자열을 파일에 추가된 줄로 쓰는 StreamWriter.WriteLineAsync(String) 호출을 기다립니다.

예외

다음 조건에서 예외가 발생합니다.

파일 시스템을 사용하는 경우 예외를 발생시킬 수 있는 추가 조건이 있습니다. 방어적으로 프로그래밍하는 것이 좋습니다.

참조