一、获取文件系统属性,读取文件大小。
在C语言库函数中有stat函数,可以获取文件的基本信息,其中就有文件大小。
1 2 3 4 5 6 7 8 9 |
#include <sys/stat.h>//包含头文件。 int file_size( char * filename) //获取文件名为filename的文件大小。 { struct stat statbuf; int ret; ret = stat(filename,&statbuf); //调用stat函数 if (ret != 0) return -1; //获取失败。 return statbuf.st_size; //返回文件大小。 } |
二、通过C语言文件操作,获取文件大小。
以fopen打开的文件,通过fseek可以定位到文件尾,这时使用ftell函数,返回的文件指针偏移值,就是文件的实际大小。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <stdio.h>//包含头文件。 int file_size( char * filename) //获取文件名为filename的文件大小。 { FILE *fp = fopen (filename, "rb" ); //打开文件。 int size; if (fp == NULL) // 打开文件失败 return -1; fseek (fp, 0, SEEK_END); //定位文件指针到文件尾。 size= ftell (fp); //获取文件指针偏移量,即文件大小。 fclose (fp); //关闭文件。 return size; } |
三、注意事项:
第一种方式为直接读取文件信息,无需打开文件,所以更高效。
四、测试代码:
以上接口函数,均可以用如下主函数测试:
1 2 3 4 5 6 7 8 9 10 11 |
#include <stdio.h> int main() { char s[100]; int size; scanf ( "%s" ,s); //输入文件名 size = file_size(s); //获取文件大小。 if (size == -1) printf ( "无法获取文件大小,可能文件并不存在或不可读\n" ); else printf ( "文件大小为%d\n" , size); return 0; } |