std::filesystem:: copy_file
|
Défini dans l'en-tête
<filesystem>
|
||
|
bool
copy_file
(
const
std::
filesystem
::
path
&
from,
const std:: filesystem :: path & to ) ; |
(1) | (depuis C++17) |
|
bool
copy_file
(
const
std::
filesystem
::
path
&
from,
const
std::
filesystem
::
path
&
to,
|
(2) | (depuis C++17) |
|
bool
copy_file
(
const
std::
filesystem
::
path
&
from,
const
std::
filesystem
::
path
&
to,
|
(3) | (depuis C++17) |
|
bool
copy_file
(
const
std::
filesystem
::
path
&
from,
const
std::
filesystem
::
path
&
to,
|
(4) | (depuis C++17) |
copy_options::none
utilisé comme
options
.
- Si !filesystem::is_regular_file(from) (soit parce que le fichier source n'existe pas, soit parce que ce n'est pas un fichier régulier), signale une erreur.
- Sinon, 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à,
-
- signale une erreur si l'une des conditions suivantes est vraie :
-
- to et from sont identiques selon filesystem::equivalent(from, to) ;
- to n'est pas un fichier régulier selon !filesystem::is_regular_file(to) ;
- aucune des options de contrôle de filesystem::copy_file n'est définie dans options .
-
Sinon, si
copy_options::skip_existingest défini dans options , ne rien faire. -
Sinon, si
copy_options::overwrite_existingest défini dans options , copie le contenu et les attributs du fichier vers lequel from pointe vers le fichier vers lequel to pointe. -
Sinon, si
copy_options::update_existingest défini dans options , copie le fichier uniquement si from est plus récent que to , tel que défini par filesystem::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'erreur dans la surcharge non-lancée |
Valeur de retour
true si le fichier a été copié, false sinon.
Exceptions
Toute surcharge non marquée
noexcept
peut lever
std::bad_alloc
si l'allocation de mémoire échoue.
Notes
Les fonctions impliquent au plus un appel direct ou indirect à
filesystem::status(to)
(utilisé à la fois pour déterminer si le fichier existe, et, pour l'option
filesystem::copy_options::update_existing
, son heure de dernière modification).
Une erreur est signalée lorsque filesystem::copy_file est utilisé pour copier un répertoire : utilisez filesystem::copy pour cela.
filesystem::copy_file
suit les liens symboliques : utilisez
filesystem::copy_symlink
ou
filesystem::copy
avec
filesystem::copy_options::copy_symlinks
pour cela.
Exemple
#include <filesystem> #include <fstream> #include <iostream> namespace fs = std::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"
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | S'applique à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 3014 | C++17 |
error_code
surcharge marquée noexcept mais peut allouer de la mémoire
|
noexcept supprimé |
Voir aussi
|
(C++17)
|
spécifie la sémantique des opérations de copie
(énumération) |
|
(C++17)
|
copie un lien symbolique
(fonction) |
|
(C++17)
|
copie des fichiers ou répertoires
(fonction) |