std::filesystem::copy_options

std::filesystem::copy_options (복사 동작 제어 옵션)

copy()copy_file() 함수의 동작을 제어하는 옵션을 나타내는 열거 타입이에요. C++17부터 있어요.

출처: cppreference

본문

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

enum class copy_options {
    none = /* unspecified */,
    skip_existing = /* unspecified */,
    overwrite_existing = /* unspecified */,
    update_existing = /* unspecified */,
    recursive = /* unspecified */,
    copy_symlinks = /* unspecified */,
    skip_symlinks = /* unspecified */,
    directories_only = /* unspecified */,
    create_symlinks = /* unspecified */,
    create_hard_links = /* unspecified */
};

이 타입은 copy()copy_file() 함수의 동작을 제어하는 사용 가능한 옵션을 나타내요. copy_options는 BitmaskType 요구사항을 만족해요(즉 operator&, operator|, operator^, operator~, operator&=, operator|=, operator^=가 이 타입에 정의돼 있어요). none은 빈 비트마스크를 나타내고, 나머지 각 열거자는 별개의 비트마스크 요소를 나타내요.

멤버 상수

각 옵션 그룹에는 최대 하나의 복사 옵션만 있어야 해요. 그렇지 않으면 복사 함수의 동작은 정의되지 않아요.

copy_file()이 대상 파일이 이미 존재할 때를 제어하는 옵션

  • none — 오류를 보고해요(기본 동작).
  • skip_existing — 기존 파일을 유지하고 오류를 보고하지 않아요.
  • overwrite_existing — 기존 파일을 덮어써요.
  • update_existing — 복사되는 파일보다 기존 파일이 더 오래된 경우에만 덮어써요.

copy()가 하위 디렉터리에 미치는 영향을 제어하는 옵션

  • none — 하위 디렉터리를 건너뛰어요(기본 동작).
  • recursive — 하위 디렉터리의 내용을 재귀적으로 복사해요.

copy()가 심볼릭 링크에 미치는 영향을 제어하는 옵션

  • none — 심볼릭 링크를 건너뛰어요(기본 동작).
  • copy_symlinks — 심볼릭 링크를 그 목표로 복사해요.
  • skip_symlinks — 심볼릭 링크를 무시해요.
  • create_symlinks — 소스를 복사하는 대신, 소스를 가리키는 새 심볼릭 링크를 만들어요. 오류가 있으면 예외가 발생할 수 있어요.

copy()가 디렉터리 내부에 미치는 영향을 제어하는 옵션

  • none — 소스 디렉터리의 내용을 복사해요(기본 동작).
  • directories_only — 하위 디렉터리의 내용을 복사하지 않고 디렉터리 구조만 복사해요.

copy()가 하드 링크를 만드는 동작을 제어하는 옵션

  • none — 파일을 복사해요(기본 동작).
  • create_hard_links — 소스를 복사하는 대신, 소스에 대한 하드 링크를 만들어요.

예제

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;

int main()
{
    fs::create_directories("sandbox/dir/subdir");
    std::ofstream("sandbox/file1.txt").put('a');
    // copy_file with skip_existing / overwrite_existing 등으로 동작 제어
}

더 알아보기 (Learn more)

cppreference