HOWTO · Csharp

C#에서 파일 이름을 바꾸는 방법

이 문서에서는 C#에서 파일 이름을 바꾸는 방법을 소개합니다. Move() 메서드와 Copy() 메서드가 포함됩니다.

이 페이지의 내용

C#에서 파일 이름을 바꾸는 작업은 파일을 새 경로로 이동하는 것입니다. 원래 경로에 파일을 남기지 않으려면 File.Move를 사용하세요. 원본을 유지하면서 새 이름의 파일도 필요하다면 File.Copy를 사용하세요. 두 작업 모두 원본 경로와 대상 경로를 받으므로 파일 이름만 바꾸려면 같은 디렉터리와 새 파일 이름을 조합하면 됩니다.

아래 예제는 자체적으로 임시 파일을 만들기 때문에 경로 설정을 애플리케이션에 맞게 바꿔 사용할 수 있습니다. 제공된 런타임 검사에서 두 예제 모두 성공적으로 실행되었으며 콘솔 출력은 없었습니다.

File.Move로 파일 이름 바꾸기

File.Move는 파일을 원본 경로에서 대상 경로로 옮깁니다. 같은 디렉터리에서 이름만 바꾸려면 대상 경로에 해당 디렉터리와 새 파일 이름을 지정하세요. 이동이 성공하면 파일은 대상 경로에 있으며 원본 경로에서는 더 이상 사용할 수 없습니다.

다음 전체 프로그램은 임시 원본 파일을 만든 뒤 같은 디렉터리의 새 이름으로 옮기고, 작업이 끝나면 임시 디렉터리를 삭제합니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string directory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
        Directory.CreateDirectory(directory);
        string sourcePath = Path.Combine(directory, "old-name.txt");
        string destinationPath = Path.Combine(directory, "new-name.txt");

        try
        {
            File.WriteAllText(sourcePath, "Example content");
            File.Move(sourcePath, destinationPath);
        }
        finally
        {
            Directory.Delete(directory, true);
        }
    }
}

원본 파일이 존재해야 하며 대상 경로를 사용할 수 있어야 합니다. 대상이 다른 디렉터리에 있으면 파일 이름이 바뀌는 동시에 해당 디렉터리로 이동합니다. 따라서 File.Move는 기존 경로에서 파일을 더 이상 참조할 수 없게 하려는 경우에 적합합니다. 이 작업은 복사본을 남기지 않습니다.

File.Copy로 새 이름의 복사본 만들기

원본 파일과 새 이름의 파일을 모두 남겨야 한다면 File.Copy를 선택하세요. 첫 번째 인수는 기존 원본 파일이고 두 번째 인수는 복사본을 만들 경로입니다. 이름만 바꾼 듯한 복사본을 만들려면 같은 디렉터리를 지정하고, 다른 위치에 복사본을 두려면 다른 디렉터리를 지정할 수 있습니다.

다음 전체 프로그램은 임시 원본 파일을 만든 뒤 새 파일 이름으로 복사하고, 작업이 끝나면 해당 디렉터리와 함께 두 파일을 정리합니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string directory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
        Directory.CreateDirectory(directory);
        string sourcePath = Path.Combine(directory, "old-name.txt");
        string destinationPath = Path.Combine(directory, "new-name.txt");

        try
        {
            File.WriteAllText(sourcePath, "Example content");
            File.Copy(sourcePath, destinationPath);
        }
        finally
        {
            Directory.Delete(directory, true);
        }
    }
}

복사가 성공하면 원본은 원래 경로에 그대로 남고 새 파일은 대상 경로에서 사용할 수 있습니다. 원본을 백업으로 보관하거나 다른 작업의 입력으로 유지해야 할 때 유용합니다. 복사본을 만들면 저장 공간이 추가로 필요하며, 나중에 한 파일을 수정해도 다른 파일이 자동으로 갱신되지는 않습니다.

경로와 기존 대상 파일 처리

경로에는 유효한 C# 문자열을 사용하세요. @"C:\example\old-name.txt"와 같은 축자 문자열에서는 백슬래시가 이스케이프 문자로 처리되지 않습니다. 디렉터리와 파일 이름을 조합할 때는 Path.Combine도 편리합니다. 예제 프로그램은 특정 드라이브나 기존 폴더에 의존하지 않도록 임시 디렉터리와 Path.Combine을 사용합니다. 애플리케이션에서는 프로세스가 접근할 수 있는 디렉터리를 선택하고 필요하다면 상위 디렉터리가 있는지 확인하세요.

두 작업 모두 성공하려면 원본 파일이 미리 존재해야 합니다. 파일 이름을 잘못 입력했거나 예상과 다른 작업 디렉터리를 사용했거나 존재하지 않는 폴더의 경로를 지정하면 작업이 실패할 수 있습니다. 가능하면 이미 알고 있는 디렉터리 값을 사용해 경로를 만들고, 파일을 변경하기 전에 이동하거나 복사하려는 파일이 맞는지 확인하세요.

기본적으로 File.Move와 File.Copy는 대상에 이미 있는 파일을 덮어쓰지 않습니다. 대상 이름이 이미 사용 중일 수 있다면 다른 이름을 선택하거나 작업을 호출하기 전에 해당 상황을 처리하세요. 덮어쓰기 오버로드의 제공 여부나 동작은 대상 프레임워크에 따라 다르므로, 오버로드에 의존하기 전에 애플리케이션이 대상으로 하는 프레임워크의 문서를 확인하세요. 이름 바꾸기 작업이 기존 파일을 경고 없이 대체한다고 가정하지 마세요.

요약하면 파일 하나를 새 경로로 옮기려면 File.Move를 사용하고, 원본을 유지하면서 별도의 복사본을 만들려면 File.Copy를 사용하세요. 어떤 방법이 적절한지는 기존 경로에 원본 파일을 계속 남겨야 하는지에 따라 달라집니다.