Dateigröße mit stat() in C/C++ ermitteln

English Deutsch

Problem:

Du möchtest stat() aus dem POSIX-Header sys/stat.h verwenden, um die Größe einer Datei zu ermitteln.

Lösung

Verwende diese Funktion:

get_filesize_stat.cpp
#include <sys/stat.h>

/**
 * Ermittelt die Größe einer Datei.
 * @return Die Dateigröße, oder 0 wenn die Datei nicht existiert.
 */
size_t getFilesize(const char* filename) {
    struct stat st;
    if(stat(filename, &st) != 0) {
        return 0;
    }
    return st.st_size;
}

Wenn du C++ std::string für den Dateinamen anstelle von char* verwenden möchtest, kannst du stattdessen diese äquivalente Funktion verwenden:

get_filesize_stat_string.cpp
#include <sys/stat.h>

/**
 * Ermittelt die Größe einer Datei.
 * @param filename Der Name der Datei, deren Größe geprüft werden soll
 * @return Die Dateigröße, oder 0 wenn die Datei nicht existiert.
 */
size_t getFilesize(const std::string& filename) {
    struct stat st;
    if(stat(filename.c_str(), &st) != 0) {
        return 0;
    }
    return st.st_size;
}

Diese Funktionen geben exakt die gleiche Zahl zurück, als ob du -sb auf der gleichen Datei ausgeführt würde.

Eine detaillierte stat()-Referenz findest du auf der Opengroup-Seite zu stat


Check out similar posts by category: C/C++