如何在 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++
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow