linux下获取文件字节大小的两种方法

一.linux下获取文件大小的两种方法

  1. 通过移动文件读写位置获取文件大小,但是在读取大文件时,容易崩溃
  2. 使用posix系统上提供的stat()函数获取文件的各种信息,其中就包括文件字节大小信息,速度快

二.源码

#include
#include
#include

/*
 ** 获取文件大小的两种方法
 */

//通过fseek函数移动文件流的读写位置
size_t get_filebytes1(const char *filename)
{
   size_t file_size=0;

   FILE *fp;
   fp=fopen(filename,"r");
   if(NULL==fp)
	   printf("Read file error\n");
   else
   {
           printf("Open file success\n");
	   fseek(fp,0,SEEK_END); //将文件读写指针移动到文件尾
	   file_size=ftell(fp); //ftell函数获取从文件尾移动到文件开头的偏移量
	   pclose(fp);
   }
   
   return file_size;
}

//通过系统stat结构体获取文件信息
size_t get_filebytes2(const char *filename)
{
   size_t flag;
   size_t file_size=0;
   struct stat statbuf; 
   flag=stat(filename,&statbuf); //使用stat()获取文件信息
   if(flag!=0)
	   printf("Get file information error\n");
   else
   {
           printf("Get file information success\n");
           file_size=statbuf.st_size; //获取文件大小
   }
   return file_size;
}	

int main(int argc,char *argv[])
{
  char *filename=argv[1];
  size_t file_size;
  if(argc<2)
	  printf("Usage:%s [filename]\n",argv[0]);
  else
  {
   file_size=get_filebytes2(filename);
   printf("File is %ld bytes\n",file_size);
  }
}

你可能感兴趣的:(IO操作)