std::filesystem::copy_options
Определён в заголовочном файле <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^=). none представляет пустую битовую маску; каждый другой элемент перечисления представляет отдельный элемент битовой маски.
Константы-члены
В каждой из следующих групп параметров может присутствовать не более одного параметра копирования; в противном случае поведение функций копирования не определено.
| Константа-член | Значение |
|---|---|
параметры, управляющие поведением 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"); // copy file
fs::copy("sandbox/dir", "sandbox/dir2"); // copy directory (non-recursive)
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) | копирует содержимое файла (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/filesystem/copy_options