如何在 C/C++ 中使用 stat() 获取文件大小

问题:

你想使用 sys/stat.h POSIX 头文件中的 stat() 来获取文件大小。

解决方案

使用此函数:

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

/**
 * 获取文件大小。
 * @return 文件大小,如果文件不存在则为 0。
 */
size_t getFilesize(const char* filename) {
    struct stat st;
    if(stat(filename, &st) != 0) {
        return 0;
    }
    return st.st_size;
}

如果你想用 C++ std::string 作为文件名而不是 char*,你可以使用这个等效版本:

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

/**
 * 获取文件大小。
 * @param filename 要检查大小的文件名
 * @return 文件大小,如果文件不存在则为 0。
 */
size_t getFilesize(const std::string& filename) {
    struct stat st;
    if(stat(filename.c_str(), &st) != 0) {
        return 0;
    }
    return st.st_size;
}

这些函数返回的数字与在同一文件上执行 du -sb 完全相同。

有关详细的 stat() 参考,请参见 Opengroup mkdir 页面


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