std::filesystem::copy_options
提供: cppreference.com
< cpp | filesystem
<tbody>
</tbody>
| ヘッダ <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_options は BitmaskType の要件を満たします (つまり、この型に対するビット単位の演算子 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
|
ファイルのコピーを作成する代わりに、元と同じファイルに解決されるハードリンクを作成します。 |
例
Run this code
#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"); // ディレクトリをコピーします (再帰しません)。
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) |
ファイルの内容をコピーします (関数) |