std::filesystem::copy_file

std::filesystem::copy_file (파일 복사)

단일 파일의 내용과 속성을 다른 위치로 복사하는 함수예요. 복사 옵션으로 겹쳐쓰기·오류 처리 방식을 정할 수 있어요. C++17부터 있어요.

출처: cppreference

본문

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

bool copy_file( const std::filesystem::path& from,
                const std::filesystem::path& to );                    // (1) C++17
bool copy_file( const std::filesystem::path& from,
                const std::filesystem::path& to, std::error_code& ec ); // (2) C++17
bool copy_file( const std::filesystem::path& from,
                const std::filesystem::path& to,
                std::filesystem::copy_options options );               // (3) C++17
bool copy_file( const std::filesystem::path& from,
                const std::filesystem::path& to,
                std::filesystem::copy_options options, std::error_code& ec ); // (4) C++17
  • 1,2) 기본 버전으로, (3,4)에서 optionscopy_options::none을 쓴 것과 동등해요.
  • 3,4) options가 나타내는 복사 옵션을 사용해 from에서 to로 단일 파일을 복사해요. options 안의 어느 copy_options 옵션 그룹에 옵션이 두 개 이상 있으면(그룹이 copy_file과 무관하더라도) 동작은 정의되지 않아요.
    • !filesystem::is_regular_file(from)이면(소스 파일이 없거나 일반 파일이 아니거나) 오류를 보고해요.
    • 그 외에 대상 파일이 존재하지 않으면, from이 귀결되는 파일의 내용과 속성을 to가 귀결되는 파일로 복사해요(심볼릭 링크는 따라가요).
    • 대상 파일이 이미 존재하면, 다음 중 하나가 참이면 오류를 보고해요 (동일 파일인지, skip_existing·overwrite_existing·update_existing 등의 옵션 조합에 따라 처리). files::copy_options::overwrite_existing면 겹쳐쓰고, update_existing이면 소스가 더 새롭거나 크면 갱신하고, skip_existing이면 그대로 두고 false를 돌려줘요.

매개변수

  • from — 복사할 파일 경로
  • to — 복사 대상 경로
  • ec — 예외 없는 버전에서 오류 보고용 출력 매개변수
  • options — 파일 복사 옵션

반환값

복사가 이루어졌으면 true, 아니면 false예요.

예외

noexcept로 표시되지 않은 오버로드는 메모리 할당이 실패하면 std::bad_alloc을 던질 수 있어요. OS API 오류가 있으면 filesystem_error를 던지거나(던지는 버전) ec를 설정해요(예외 없는 버전).

더 알아보기 (Learn more)

cppreference