Chinaunix首页 | 论坛 | 博客
  • 博客访问: 434266
  • 博文数量: 247
  • 博客积分: 185
  • 博客等级: 入伍新兵
  • 技术积分: 1005
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-10 10:39
文章分类

全部博文(247)

文章存档

2015年(3)

2014年(21)

2013年(53)

2012年(170)

分类:

2012-10-18 12:46:15

在文件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;

}

 

 

阅读(237) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~