Namespaces
Variants

std::experimental::filesystem:: copy_options

From cppreference.net
ヘッダーで定義 <experimental/filesystem>
enum class copy_options {

none = 0 ,
skip_existing = 1 ,
overwrite_existing = 2 ,
update_existing = 4 ,
recursive = 8 ,
copy_symlinks = 16 ,
skip_symlinks = 32 ,
directories_only = 64 ,
create_symlinks = 128 ,
create_hard_links = 256

} ;
(filesystem TS)

この型は、 copy() 関数および copy_file() 関数の動作を制御する利用可能なオプションを表します。

copy_options BitmaskType の要件を満たします (これはビット単位演算子 operator & operator | operator ^ operator~ operator & = operator | = 、および operator ^ = がこの型に対して定義されていることを意味します)。

メンバー定数

以下のオプショングループの各々において、最大で1つのコピーオプションが存在する場合があります。それ以外の場合、コピー関数の動作は未定義となります。

メンバー定数 意味
ファイルが既に存在する場合の copy_file() の動作を制御するオプション
none 0 エラーを報告する(デフォルト動作)。
skip_existing 1 既存のファイルを保持し、エラーを報告しない。
overwrite_existing 2 既存のファイルを置き換える。
update_existing 4 既存のファイルがコピー元のファイルより古い場合のみ置き換える。
サブディレクトリに対する copy() の効果を制御するオプション
none 0 サブディレクトリをスキップする(デフォルト動作)。
recursive 8 サブディレクトリとその内容を再帰的にコピーする。
シンボリックリンクに対する copy() の効果を制御するオプション
none 0 シンボリックリンクをたどる(デフォルト動作)。
copy_symlinks 16 シンボリックリンクを、それが指すファイルではなくシンボリックリンクとしてコピーする。
skip_symlinks 32 シンボリックリンクを無視する。
コピーの種類を制御する copy() のオプション
none 0 ファイルの内容をコピーする(デフォルト動作)。
directories_only 64 ディレクトリ構造のみをコピーし、非ディレクトリファイルはコピーしない。
create_symlinks 128 ファイルのコピーを作成する代わりに、元のファイルを指すシンボリックリンクを作成する。注:コピー先パスがカレントディレクトリ内でない限り、ソースパスは絶対パスでなければならない。
create_hard_links 256 ファイルのコピーを作成する代わりに、元のファイルと同じファイルを解決するハードリンクを作成する。

#include <experimental/filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::experimental::filesystem;
int main()
{
    fs::create_directories("sandbox/dir/subdir");
    std::ofstream("sandbox/file1.txt").put('a');
    fs::copy("sandbox/file1.txt", "sandbox/file2.txt"); // ファイルをコピー
    fs::copy("sandbox/dir", "sandbox/dir2"); // ディレクトリをコピー(非再帰的)
    // sandbox には2つのファイルと2つのディレクトリがあり、そのうち1つはサブディレクトリを持っています
    // sandbox/file1.txt
    // sandbox/file2.txt
    // sandbox/dir2
    // sandbox/dir
    //    sandbox/dir/subdir
    fs::copy("sandbox", "sandbox/copy", fs::copy_options::recursive);
    // sandbox/copy には上記のファイルとサブディレクトリのコピーが含まれています
    fs::remove_all("sandbox");
}

関連項目

ファイルまたはディレクトリをコピーする
(関数)
ファイル内容をコピーする
(関数)