std::filesystem::rename

std::filesystem::rename (파일·디렉터리 이동·이름 변경)

old_p가 식별하는 파일시스템 개체를 new_p로 이동·이름 변경하는 함수예요. C++17부터 있어요.

출처: cppreference

본문

<filesystem> 헤더에 정의돼 있어요.

void rename( const std::filesystem::path& old_p,
             const std::filesystem::path& new_p );        // (1) C++17
void rename( const std::filesystem::path& old_p,
             const std::filesystem::path& new_p,
             std::error_code& ec ) noexcept;              // (2) C++17

POSIX rename처럼 old_p가 식별하는 파일시스템 개체를 new_p로 이동·이름 변경해요.

  • old_p가 비디렉터리 파일이면 new_p는 다음 중 하나여야 해요.
    • old_p와 같은 파일 또는 그것의 하드 링크 — 이 경우 아무것도 하지 않아요.
    • 기존 비디렉터리 파일 — new_p를 먼저 삭제한 뒤, 다른 프로세스가 new_p가 삭제된 것을 관찰하지 못하게 하면서 new_p 경로 이름을 파일에 링크하고 old_p를 파일에서 링크 해제해요. old_p를 담은 디렉터리와 new_p를 담은 디렉터리 모두에 쓰기 권한이 필요해요.
    • 기존 디렉터리에 존재하지 않는 파일 — new_p 경로 이름을 파일에 링크하고 old_p를 파일에서 링크 해제해요. 두 디렉터리 모두에 쓰기 권한이 필요해요.
  • old_p가 디렉터리면 new_p는 다음 중 하나여야 해요.
    • old_p와 같은 디렉터리 또는 그것의 하드 링크 — 아무것도 하지 않아요.
    • 기존 디렉터리 — POSIX에서는 비어 있으면 new_p를 삭제하지만, 다른 시스템에서는 오류일 수 있어요. 오류가 아니라면, 그 뒤에 (다른 프로세스가 관찰하지 못하게) old_pnew_p로 이름을 바꿔요.

매개변수

  • old_p — 이름을 바꿀 경로
  • new_p — 새 이름
  • ec — 예외 없는 버전에서 오류 보고용 출력 매개변수

반환값

(없음)

예외

던지는 오버로드는 OS API 오류가 있으면 std::filesystem::filesystem_error를 던져요. 예외 없는 오버로드는 ec를 설정해요.

더 알아보기 (Learn more)

cppreference