获取文件大小

介绍两种获取文件大小的方法:

1、使用ftell函数

函数原型:long ftell(FILE *stream);
注意:因为ftell返回long型,根据long型的取值范围(-2147483648~2147483647),故对大于2.1G的文件进行操作时出错。

此种以打开文件的方法取得文件的大小,不适合大文件,并且可能会出现访问冲突(比如正在下载的文件),效率也比较低。

unsigned long get_file_size(const char *path)  
{  
    unsigned long filesize = 0;  
    FILE *fp = NULL; 
	
    fp = fopen(path, "r");  
    if (NULL == fp)
    {
    	printf("Error: open file failed...\n");
    	return filesize; 
    }
         
    fseek(fp, 0L, SEEK_END);
    filesize = ftell(fp);  
    fclose(fp); 
	
    return filesize;  
} 


2、使用 stat函数


stat函数讲解

表头文件:  #include <sys/stat.h>
        #include <unistd.h>
定义函数:  int stat(const char *file_name, struct stat *buf);
函数说明:  通过文件名filename获取文件信息,并保存在buf所指的结构体stat中
返回值:   执行成功则返回0,失败返回-1,错误代码存于errno

此种使用读取文件属性的方法得到文件的大小,效率较高,也较稳定



#include <sys/stat.h>   
  
unsigned long get_file_size(const char *path)  
{  
    unsigned long filesize = 0;      
    struct stat statbuff; 
	
    if (stat(path, &statbuff) < 0)
	{  
        return filesize;  
    }
	else
	{  
        filesize = statbuff.st_size;  
    }
	
    return filesize;  
}





   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值