Namespaces
Variants

std::experimental::filesystem:: file_size

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

Retourne la taille du fichier régulier p , déterminée comme si en lisant le membre st_size de la structure obtenue par stat POSIX (les liens symboliques sont suivis).

Tenter de déterminer la taille d'un répertoire (ainsi que de tout autre fichier qui n'est pas un fichier régulier ou un lien symbolique) est considéré comme une erreur.

La surcharge non levante retourne - 1 en cas d'erreurs.

Table des matières

Paramètres

p - chemin à examiner
ec - paramètre de sortie pour le rapport d'erreur dans la surcharge non-lançante

Valeur de retour

La taille du fichier, en octets.

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 a été laissé en anglais car : 1. Il contient des balises HTML qui ne doivent pas être traduites 2. `std::bad_alloc` est un terme spécifique au C++ qui ne doit pas être traduit 3. La structure et le formatage ont été préservés conformément aux instructions La traduction française de "bad_alloc" serait "mauvaise allocation", mais comme demandé, les termes spécifiques au C++ n'ont pas été traduits. 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

Exemple

#include <experimental/filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::experimental::filesystem;
int main()
{
    fs::path p = fs::current_path() / "example.bin";
    std::ofstream(p).put('a'); // create file of size 1
    std::cout << "File size = " << fs::file_size(p) << '\n';
    fs::remove(p);
    try
    {
        fs::file_size("/dev"); // attempt to get size of a directory
    }
    catch (fs::filesystem_error& e)
    {
        std::cout << e.what() << '\n';
    }        
}

Sortie possible :

File size = 1
filesystem error: cannot get file size: Is a directory [/dev]

Voir aussi

modifie la taille d'un fichier régulier par troncation ou remplissage par des zéros
(fonction)
détermine l'espace libre disponible sur le système de fichiers
(fonction)