名前空間
変種
操作

std::filesystem::copy_options

提供: cppreference.com
 
 
 
ヘッダ <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 */

};
(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 <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"); // copy file
    fs::copy("sandbox/dir", "sandbox/dir2"); // copy directory (non-recursive)
    // sandbox holds 2 files and 2 directories, one of which has a subdirectory
    // sandbox/file1.txt
    // sandbox/file2.txt
    // sandbox/dir2
    // sandbox/dir
    //    sandbox/dir/subdir
    fs::copy("sandbox", "sandbox/copy", fs::copy_options::recursive);
    // sandbox/copy holds copies of the above files and subdirectories
    fs::remove_all("sandbox");
}


[編集] 関連項目

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