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)에서
options로copy_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를 설정해요(예외 없는 버전).