Getting Information About a File - C++ File Stream

C++ examples for File Stream:File Operation

Description

Getting Information About a File

Demo Code

#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 */
};

Related Tutorials