c# 파일 입출력의 파일 읽기 및 쓰기 or 파일과 디렉터리 관리(StreamReader, StreamWriter)

2024. 9. 20. 20:38c#

C# 파일 입출력: 파일 읽기 및 쓰기 / 파일과 디렉터리 관리

C#에서 파일을 다루는 것은 매우 중요하며, 데이터를 저장하고 불러오거나 파일을 생성하는 작업은 대부분의 애플리케이션에서 자주 사용됩니다.
C#에서는 StreamReader, StreamWriter와 같은 클래스를 통해 파일을 읽고 쓸 수 있으며, File 클래스와 Directory 클래스를 통해 파일과 디렉터리 관리도 가능합니다.
이번 포스팅에서는 파일 입출력과 파일 및 디렉터리 관리에 대해 다뤄보겠습니다.


1. 파일 읽기 (StreamReader)

파일을 읽는 가장 일반적인 방법 중 하나는 StreamReader 클래스를 사용하는 것입니다.
이 클래스는 파일을 읽기 위해 사용되며, 텍스트 파일을 한 줄씩 또는 전체를 읽어들일 수 있습니다.

StreamReader로 파일 읽기 예시

using System;
using System.IO;

class FileReadExample
{
    public static void Main()
    {
        // 파일 경로
        string filePath = @"C:\example\file.txt";

        // StreamReader를 사용하여 파일 읽기
        using (StreamReader reader = new StreamReader(filePath))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                Console.WriteLine(line);
            }
        }
    }
}

위 코드에서는 StreamReader를 사용해 파일을 한 줄씩 읽고, 파일 끝에 도달할 때까지 while문을 통해 출력합니다.


2. 파일 쓰기 (StreamWriter)

파일에 데이터를 쓰는 가장 일반적인 방법은 StreamWriter 클래스를 사용하는 것입니다.
이 클래스를 통해 파일에 텍스트를 쓸 수 있으며, 파일이 없을 경우 새 파일을 생성할 수 있습니다.

StreamWriter로 파일 쓰기 예시

using System;
using System.IO;

class FileWriteExample
{
    public static void Main()
    {
        // 파일 경로
        string filePath = @"C:\example\file.txt";

        // StreamWriter를 사용하여 파일 쓰기
        using (StreamWriter writer = new StreamWriter(filePath, true)) // 'true'는 파일 끝에 추가한다는 뜻
        {
            writer.WriteLine("새로운 라인 추가");
            writer.WriteLine("파일 쓰기 예제");
        }
    }
}

StreamWriter를 통해 파일에 텍스트를 쓸 수 있으며, true 값을 전달하여 파일의 기존 내용을 덮어쓰지 않고 새로운 데이터를 추가할 수 있습니다.


3. 파일 관리(File 클래스)

C#에서는 File 클래스와 Directory 클래스를 사용하여 파일과 디렉터리를 쉽게 관리할 수 있습니다.
이를 통해 파일을 생성, 삭제, 이동, 복사하거나 디렉터리를 생성, 삭제, 탐색할 수 있습니다.

File 클래스는 파일의 다양한 작업을 수행할 수 있는 메서드를 제공합니다.

파일 존재 여부 확인

if (File.Exists(filePath))
{
    Console.WriteLine("파일이 존재합니다.");
}
else
{
    Console.WriteLine("파일이 없습니다.");
}

파일 복사

File.Copy(@"C:\example\source.txt", @"C:\example\copy.txt");

파일 삭제

File.Delete(@"C:\example\file.txt");

 


4. 디렉터리 관리 (Directory 클래스)

Directory 클래스는 디렉터리를 생성하거나 삭제하는 등의 작업을 할 수 있습니다.

디렉터리 생성

string directoryPath = @"C:\example\newfolder";

if (!Directory.Exists(directoryPath))
{
    Directory.CreateDirectory(directoryPath);
    Console.WriteLine("디렉터리가 생성되었습니다.");
}

디렉터리 삭제

Directory.Delete(directoryPath, true); // 'true'는 하위 폴더 및 파일도 함께 삭제
Console.WriteLine("디렉터리가 삭제되었습니다.");

디렉터리 내 파일 리스트 가져오기

string[] files = Directory.GetFiles(@"C:\example");
foreach (string file in files)
{
    Console.WriteLine(file);
}

5. 예외 처리

파일을 읽거나 쓸 때, 또는 디렉터리를 관리할 때 예외가 발생할 수 있습니다.
따라서 적절한 try-catch 구문을 통해 오류를 처리하는 것이 중요합니다.

파일 입출력 예외 처리 예시

try
{
    using (StreamReader reader = new StreamReader(@"C:\nonexistent\file.txt"))
    {
        string line;
        while ((line = reader.ReadLine()) != null)
        {
            Console.WriteLine(line);
        }
    }
}
catch (FileNotFoundException ex)
{
    Console.WriteLine("파일을 찾을 수 없습니다: " + ex.Message);
}
catch (Exception ex)
{
    Console.WriteLine("오류 발생: " + ex.Message);
}

이 코드는 파일이 존재하지 않을 경우 발생하는 FileNotFoundException을 처리하고, 그 외의 일반적인 예외도 처리할 수 있게 구성되어 있습니다.


 

파일 입출력과 파일 및 디렉터리 관리는 C#에서 중요한 부분을 차지합니다.
StreamReaderStreamWriter를 통해 파일을 읽고 쓸 수 있으며, FileDirectory 클래스를 사용해 파일과 디렉터리를 관리할 수 있습니다.
효율적으로 파일을 관리하기 위해서는 항상 예외 처리를 염두에 두는 것이 중요합니다.