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

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

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

二.源码

#include<stdio.h>
#include<stdlib.h>
#include<sys/stat.h>

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

//通过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);
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值