全部博文(1293)
分类: LINUX
2011-04-24 16:56:01
在文件IO的编程过程中,经常会遇到如何求取文件长度的问题,这里,我将工作及教学中积累的一些常用方法写出来与大家分享。
第一类:lseek/fseek
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(stream, 0L, SEEK_END);
length = ftell(stream);
return length;
}
第二类:stat、fstat函数族
函数原型:
int stat(char *filename,struct stat *s);
int fstat(int fd,struct stat *s);
代码片段:以stat为例,fstat只是第一个参数用文件描述符。
#include
#include
int GetFileLen
(
char *_pName
)
{
struct stat st;
stat(_pName, &st);
return st.st_size;
}