Problem:
You want to use stat()
from sys/stat.h
POSIX header in order to get the size of a file.
Solution:
Use this function:
#include <sys/stat.h> /** * Get the size of a file. * @return The filesize, or 0 if the file does not exist. */ size_t getFilesize(const char* filename) { struct stat st; if(stat(filename, &st) != 0) { return 0; } return st.st_size; }
If you want to use C++ std::string
for the filename instead of char*
, you can use this equivalent instead:
#include <sys/stat.h> /** * Get the size of a file. * @param filename The name of the file to check size for * @return The filesize, or 0 if the file does not exist. */ size_t getFilesize(const std::string& filename) { struct stat st; if(stat(filename.c_str(), &st) != 0) { return 0; } return st.st_size; }
These functions return exactly the same number as if du -sb
would be executed on the same file.
For a detailed stat() reference, see the Opengroup page on mkdir