std::filesystem:: copy_options
|
定義済みヘッダー
<filesystem>
|
||
|
enum
class
copy_options
{
none
=
/* unspecified */
,
|
(C++17以降) | |
この型は、 copy() 関数および copy_file() 関数の動作を制御する利用可能なオプションを表します。
copy_options
は
BitmaskType
の要件を満たす(これはビット単位演算子
operator
&
、
operator
|
、
operator
^
、
operator~
、
operator
&
=
、
operator
|
=
、および
operator
^
=
がこの型に対して定義されていることを意味する)。
none
は空のビットマスクを表し、他のすべての列挙子は個別のビットマスク要素を表す。
メンバー定数
以下のオプショングループの各グループにおいて、最大で1つのコピーオプションが存在する場合があります。それ以外の場合、コピー関数の動作は未定義となります。
| メンバー定数 | 意味 |
|---|---|
| ファイルが既に存在する場合の 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 <filesystem> #include <fstream> #include <iostream> 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"); // ディレクトリをコピー(非再帰的) const auto 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)
|
ファイルまたはディレクトリをコピーする
(関数) |
|
(C++17)
|
ファイルの内容をコピーする
(関数) |