名前空間
変種
操作

std::filesystem::copy_options

提供: cppreference.com
 
 
 
ヘッダ <filesystem> で定義
enumclass 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 */

};
(C++17以上)

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

copy_optionsBitmaskType の要件を満たします (つまり、この型に対するビット単位の演算子 operator&, operator|, operator^, operator~, operator&=, operator|=, operator^= が定義されます)。

[編集]メンバ定数

それぞれのグループ内で高々1つのコピーオプションだけが選択でき、さもなければ copy 関数の動作は未定義です。

メンバ定数 意味
ファイルがすでに存在するとき copy_file() を制御するオプション
none エラーを報告します (デフォルトの動作)。
skip_existing エラーを報告せず、既存のファイルを維持します。
overwrite_existing 既存のファイルを置き換えます。
update_existing 既存のファイルがコピーするファイルよりも古い場合に限り、既存のファイルを置き換えます。
サブディレクトリに対する copy() の効果を制御するオプション
none サブディレクトリをスキップします (デフォルトの動作)。
recursive サブディレクトリとその内容を再帰的にコピーします。
シンボリックリンクに対する copy() の効果を制御するオプション
none シンボリックリンクを辿ります (デフォルトの動作)。
copy_symlinks 指す先のファイルではなく、シンボリックリンクをシンボリックリンクとしてコピーします。
skip_symlinks シンボリックリンクを無視します。
copy() が行うコピーの種類を制御するオプション
none ファイルの内容をコピーします (デフォルトの動作)。
directories_only ディレクトリ構造をコピーしますが、ディレクトリでないファイルは一切コピーしません。
create_symlinks ファイルのコピーを作成する代わりに、元のファイルを指すシンボリックリンクを作成します。 ノート: コピー先のパスがカレントディレクトリでない限り、コピー元のパスは絶対パスでなければなりません。
create_hard_links ファイルのコピーを作成する代わりに、元と同じファイルに解決されるハードリンクを作成します。

[編集]

#include <cstdlib>#include <iostream>#include <fstream>#include <filesystem>namespace fs = std::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");// ディレクトリをコピーします (再帰しません)。constauto copyOptions = fs::copy_options::update_existing| fs::copy_options::recursive| fs::copy_options::directories_only; fs::copy("sandbox", "sandbox_copy", copyOptions);static_cast<void>(std::system("tree")); fs::remove_all("sandbox"); fs::remove_all("sandbox_copy");}

出力例:

. ├── sandbox │ ├── dir │ │ └── subdir │ ├── dir2 │ ├── file1.txt │ └── file2.txt └── sandbox_copy ├── dir │ └── subdir └── dir2   8 directories, 2 files

[編集]関連項目

(C++17)
ファイルまたはディレクトリをコピーします
(関数)[edit]
(C++17)
ファイルの内容をコピーします
(関数)[edit]
close