1.通过ftell
ftell可以返回文件当前位置的偏移量,所以可以先通过fseek将文件当前位置挪到尾部,然后再通过ftell获取文件的大小
2.通过fstat,该函数可以获取文件的相关信息,其中有关于文件大小的值
cpp
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
int getFileSizeFromTell(char* filePath)
{
int fileSize = 0;
FILE* fp = fopen(filePath, "r");
if(fp)
{
fseek(fp, 0, SEEK_END);
fileSize = ftell(fp);
fclose(fp);
}
return fileSize;
}
int getFileSizeFromStat(char* filePath)
{
int fileSize = 0;
int fd = open(filePath, O_RDONLY);
if(fd >= 0)
{
struct stat fileStat;
int ret = fstat(fd, &fileStat);
if(ret != -1)
{
fileSize = fileStat.st_size;
}
close(fd);
}
return fileSize;
}
int main()
{
printf("file size:%d\n", getFileSizeFromTell("./testfile.txt"));
printf("file size:%d\n", getFileSizeFromStat("./testfile.txt"));
return 0;
}
文件testfile.txt的内容是:123456
运行程序输出:
file size:6
file size:6
可以看到正确的获取了文件的大小