std::filesystem:: copy_options
|
Défini dans l'en-tête
<filesystem>
|
||
|
enum
class
copy_options
{
none
=
/* unspecified */
,
|
(depuis C++17) | |
Ce type représente les options disponibles qui contrôlent le comportement des fonctions copy() et copy_file() .
copy_options
satisfait aux exigences de
BitmaskType
(ce qui signifie que les opérateurs bit à bit
operator
&
,
operator
|
,
operator
^
,
operator~
,
operator
&
=
,
operator
|
=
, et
operator
^
=
sont définis pour ce type).
none
représente le masque de bits vide ; chaque autre énumérateur représente un élément de masque de bits distinct.
Constantes membres
Au plus une option de copie dans chacun des groupes d'options suivants peut être présente, sinon le comportement des fonctions de copie est indéfini.
| Constante de membre | Signification |
|---|---|
| Options contrôlant copy_file() lorsque le fichier existe déjà | |
none
|
Signaler une erreur (comportement par défaut). |
skip_existing
|
Conserver le fichier existant sans signaler d'erreur. |
overwrite_existing
|
Remplacer le fichier existant. |
update_existing
|
Remplacer le fichier existant uniquement s'il est plus ancien que le fichier copié. |
| Options contrôlant les effets de copy() sur les sous-répertoires | |
none
|
Ignorer les sous-répertoires (comportement par défaut). |
recursive
|
Copier récursivement les sous-répertoires et leur contenu. |
| Options contrôlant les effets de copy() sur les liens symboliques | |
none
|
Suivre les liens symboliques (comportement par défaut). |
copy_symlinks
|
Copier les liens symboliques en tant que liens, non comme les fichiers pointés. |
skip_symlinks
|
Ignorer les liens symboliques. |
| Options contrôlant le type de copie effectué par copy() | |
none
|
Copier le contenu des fichiers (comportement par défaut). |
directories_only
|
Copier la structure de répertoires sans copier les fichiers non-répertoires. |
create_symlinks
|
Créer des liens symboliques pointant vers les originaux au lieu de copier les fichiers. Note : le chemin source doit être absolu sauf si le chemin de destination est dans le répertoire courant. |
create_hard_links
|
Créer des liens physiques pointant vers les mêmes fichiers que les originaux au lieu de copier les fichiers. |
Exemple
#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"); // copier le fichier fs::copy("sandbox/dir", "sandbox/dir2"); // copier le répertoire (non récursif) 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"); }
Sortie possible :
.
├── sandbox
│ ├── dir
│ │ └── subdir
│ ├── dir2
│ ├── file1.txt
│ └── file2.txt
└── sandbox_copy
├── dir
│ └── subdir
└── dir2
8 répertoires, 2 fichiers
Voir aussi
|
(C++17)
|
copie des fichiers ou répertoires
(fonction) |
|
(C++17)
|
copie le contenu des fichiers
(fonction) |