Namespaces
Variants

std::experimental::filesystem:: resize_file

From cppreference.net
Défini dans l'en-tête <experimental/filesystem>
void resize_file ( const path & p, std:: uintmax_t new_size ) ;
void resize_file ( const path & p, std:: uintmax_t new_size, error_code & ec ) ;
(filesystem TS)

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 partie excédentaire 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-lancante

Valeur de retour

(aucun)

Exceptions

The overload that does not take an error_code & parameter throws filesystem_error on underlying OS API errors, constructed with p as the first 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 constitue les instructions de traduction. Le contenu HTML fourni ne contient aucun texte traduisible (seulement des balises HTML, des classes CSS et des termes C++ qui ne doivent pas être traduits selon les instructions).*
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

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

Démontre l'effet de la création d'un fichier creux sur l'espace libre.

#include <experimental/filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::experimental::filesystem;
int main()
{
    fs::path p = fs::temp_directory_path() / "example.bin";
    std::ofstream(p).put('a');
    std::cout << "File size:  " << fs::file_size(p) << '\n'
              << "Free space: " << fs::space(p).free << '\n';
    fs::resize_file(p, 64*1024); // resize to 64 KB
    std::cout << "File size:  " << fs::file_size(p) << '\n'
              << "Free space: " << fs::space(p).free << '\n';
    fs::remove(p);
}

Sortie possible :

File size:  1
Free space: 31805444096
File size:  65536
Free space: 31805444096

Voir aussi

retourne la taille d'un fichier
(fonction)
détermine l'espace libre disponible sur le système de fichiers
(fonction)