C++ examples for File Stream:File Operation
Getting Information About a File
#include <iostream> #include <ctime> #include <sys/types.h> #include <sys/stat.h> #include <cerrno> #include <cstring> int main(int argc, char** argv ) { struct stat fileInfo; if (stat("main.cpp", &fileInfo) != 0) { // Use stat() to get the info std::cerr << "Error: " << strerror(errno) << '\n'; return(EXIT_FAILURE); }// w w w.j ava 2 s . c o m std::cout << "Type: : "; if ((fileInfo.st_mode & S_IFMT) == S_IFDIR) { // From sys/types.h std::cout << "Directory\n"; } else { std::cout << "File\n"; } std::cout << "Size : " << fileInfo.st_size << '\n'; // Size in bytes std::cout << "Device : " << (char)(fileInfo.st_dev + 'A') << '\n'; // Device number std::cout << "Created : " << std::ctime(&fileInfo.st_ctime); // Creation time std::cout << "Modified : " << std::ctime(&fileInfo.st_mtime); // Last mod time }
The stat struct looks like this (from Kernigan and Richie's The C Programming Language [Prentice Hall]):
struct stat { dev_t st_dev; /* device of inode */ ino_t st_ino; /* inode number */ short st_mode; /* mode bits */ short st_nlink; /* number of links to file */ short st_uid; /* owner's user id */ short st_gid; /* owner's group id */ dev_t st_rdev; /* for special files */ off_t st_size; /* file size in characters */ time_t st_atime; /* time last accessed */ time_t st_mtime; /* time last modified */ time_t st_ctime; /* time inode last changed */ };