Linux下求取文件长度的几种常用方法
在文件IO的编程过程中,经常会遇到如何求取文件长度的问题,这里将工作及教学中积累的一些常用方法写出来与大家分享。
1、lseek
代码片段:
int GetFileSize(char *_pName) { int iFd = -1; int iLen = 0; if (_pName == NULL) { return -1; } iFd = open(_pName, O_RDONLY); if (iFd >= 0) { iLen = lseek(iFd, 0, SEEK_END); close(iFd); return iLen; } return iFd; }
2、fseek+ftell:特别注意文件指针的位置
代码片段
long GetFileSize(char *_pName ) { long length; FILE *fp; fp = fopen("_pName ",rw); if(fp==NULL) return -1; fseek(fp, 0L, SEEK_END); length = ftell(fp); return length; }
第二类:stat、fstat函数族
函数原型:
int stat(char *filename,struct stat *s);
int fstat(int fd,struct stat *s);
代码片段:以stat为例,fstat只是第一个参数用文件描述符。
#include <unstd.h> #include <sys/stat.h> int GetFileLen( char *_pName ) { struct stat st; stat(_pName, &st); return st.st_size; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步