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 등으로 동작 제어
}