Namespaces
Variants

std::experimental::filesystem:: copy_file

From cppreference.net
Défini dans l'en-tête <experimental/filesystem>
bool copy_file ( const path & from, const path & to ) ;
bool copy_file ( const path & from, const path & to, error_code & ec ) ;
(1) (filesystem TS)
bool copy_file ( const path & from, const path & to, copy_options options ) ;
bool copy_file ( const path & from, const path & to, copy_options options, error_code & ec ) ;
(2) (filesystem TS)
1) La valeur par défaut, équivalente à (2) avec copy_options::none utilisé comme options .
2) Copie un seul fichier de from vers to , en utilisant les options de copie indiquées par options . Le comportement est indéfini s'il y a plus d'une option dans l'un des copy_options groupes d'options présents dans options (même dans les groupes non pertinents pour copy_file ).
  • Si le fichier de destination n'existe pas,
  • copie le contenu et les attributs du fichier vers lequel from pointe vers le fichier vers lequel to pointe (les liens symboliques sont suivis).
  • Sinon, si le fichier de destination existe déjà :
  • Si to et from sont identiques selon equivalent(from, to) , signaler une erreur.
  • Sinon, si aucune des options de contrôle de copy_file n'est définie dans options , signaler une erreur.
  • Sinon, si copy_options::skip_existing est défini dans options , ne rien faire.
  • Sinon, si copy_options::overwrite_existing est défini dans options , copier le contenu et les attributs du fichier vers lequel from pointe vers le fichier vers lequel to pointe.
  • Sinon, si copy_options::update_existing est défini dans options , copier le fichier uniquement si from est plus récent que to , tel que défini par last_write_time() .

Les surcharges non levantes retournent false si une erreur survient.

Table des matières

Paramètres

from - chemin vers le fichier source
to - chemin vers le fichier cible
ec - paramètre de sortie pour le rapport d'erreurs dans la surcharge non-lancée

Valeur de retour

true si le fichier a été copié, false sinon.

Exceptions

The overload that does not take an error_code & parameter throws filesystem_error on underlying OS API errors, constructed with from as the first argument, vers as the second argument, and the OS error code as the error code argument. std:: bad_alloc *Note: Le texte à traduire était uniquement "Do not translate any HTML tags or attributes. Preserve the original formatting.Do not translate text within ,
,  tags.Don't translate C++ specific terms. Requires precision and professionalism." qui a été traduit en instructions en français. Le contenu HTML fourni ne contenait aucun texte à traduire hormis les termes C++ (std::bad_alloc) qui doivent rester en anglais selon les consignes.*
may be thrown if memory allocation fails. The overload taking an error_code & parameter sets it to the OS API error code if an OS API call fails, and executes ec. clear ( ) if no errors occur. This overload has
noexcept spécification :
noexcept

Notes

Les fonctions impliquent au plus un appel direct ou indirect à status(to) (utilisé à la fois pour déterminer si le fichier existe, et, pour l'option copy_options::update_existing , son heure de dernière écriture).

Une erreur est signalée lorsque copy_file est utilisé pour copier un répertoire : utilisez copy pour cela.

copy_file suit les liens symboliques : utilisez copy_symlink ou copy avec copy_options::copy_symlinks pour cela.

Exemple

#include <experimental/filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::experimental::filesystem;
int main()
{
    fs::create_directory("sandbox");
    std::ofstream("sandbox/file1.txt").put('a');
    fs::copy_file("sandbox/file1.txt", "sandbox/file2.txt");
    // maintenant il y a deux fichiers dans sandbox :
    std::cout << "file1.txt contient : "
              << std::ifstream("sandbox/file1.txt").rdbuf() << '\n';
    std::cout << "file2.txt contient : "
              << std::ifstream("sandbox/file2.txt").rdbuf() << '\n';
    // échec de copie du répertoire
    fs::create_directory("sandbox/abc");
    try
    {
        fs::copy_file("sandbox/abc", "sandbox/def");
    }
    catch (fs::filesystem_error& e)
    {
        std::cout << "Impossible de copier sandbox/abc : " << e.what() << '\n';
    }
    fs::remove_all("sandbox");
}

Sortie possible :

file1.txt contient : a
file2.txt contient : a
Impossible de copier sandbox/abc : copy_file: Is a directory: "sandbox/abc", "sandbox/def"

Voir aussi

spécifie la sémantique des opérations de copie
(énumération)
copie un lien symbolique
(fonction)
copie des fichiers ou répertoires
(fonction)