Namespaces
Variants

std::filesystem:: copy_options

From cppreference.net
Défini dans l'en-tête <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 */

} ;
(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)