std::filesystem:: resize_file
|
Défini dans l'en-tête
<filesystem>
|
||
|
void
resize_file
(
const
std::
filesystem
::
path
&
p,
std:: uintmax_t new_size ) ; |
(1) | (depuis C++17) |
|
void
resize_file
(
const
std::
filesystem
::
path
&
p,
std::
uintmax_t
new_size,
|
(2) | (depuis C++17) |
Modifie la taille du fichier régulier nommé par
p
comme le ferait la fonction POSIX
truncate
: si la taille du fichier était précédemment supérieure à
new_size
, la fin du fichier est supprimée. Si le fichier était précédemment plus petit que
new_size
, la taille du fichier est augmentée et la nouvelle zone apparaît comme remplie de zéros.
Table des matières |
Paramètres
| p | - | chemin à redimensionner |
| new_size | - | taille que le fichier aura désormais |
| ec | - | paramètre de sortie pour le rapport d'erreurs dans la surcharge non-lancée |
Valeur de retour
(aucun)
Exceptions
Toute surcharge non marquée
noexcept
peut lever
std::bad_alloc
si l'allocation de mémoire échoue.
Notes
Sur les systèmes qui prennent en charge les fichiers épars, l'augmentation de la taille du fichier n'augmente pas l'espace qu'il occupe sur le système de fichiers : l'allocation d'espace se produit uniquement lorsque des octets non nuls sont écrits dans le fichier.
Exemple
Montre l'effet de la création d'un fichier creux sur l'espace libre.
#include <filesystem> #include <fstream> #include <iostream> #include <locale> int main() { auto p = std::filesystem::temp_directory_path() / "example.bin"; std::ofstream{p}.put('a'); std::cout.imbue(std::locale{"en_US.UTF8"}); std::cout << "File size: " << std::filesystem::file_size(p) << '\n' << "Free space: " << std::filesystem::space(p).free << '\n'; std::filesystem::resize_file(p, 64*1024); // resize to 64 KB std::cout << "File size: " << std::filesystem::file_size(p) << '\n' << "Free space: " << std::filesystem::space(p).free << '\n'; std::filesystem::remove(p); }
Sortie possible :
File size: 1 Free space: 42,954,108,928 File size: 65,536 Free space: 42,954,108,928
Voir aussi
|
(C++17)
|
retourne la taille d'un fichier
(fonction) |
|
(C++17)
|
détermine l'espace libre disponible sur le système de fichiers
(fonction) |