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
представляет пустую битовую маску; каждый другой перечислитель представляет отдельный элемент битовой маски.
Константы-члены
В каждой из следующих групп опций может присутствовать не более одной опции копирования, иначе поведение функций копирования не определено.
| Константа-член | Значение |
|---|---|
| Опции управления 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)
|
копирует содержимое файла
(функция) |