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_p를new_p로 이름을 바꿔요.
매개변수
old_p— 이름을 바꿀 경로new_p— 새 이름ec— 예외 없는 버전에서 오류 보고용 출력 매개변수
반환값
(없음)
예외
던지는 오버로드는 OS API 오류가 있으면 std::filesystem::filesystem_error를 던져요. 예외 없는 오버로드는 ec를 설정해요.