Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12399102
  • 博文数量: 1293
  • 博客积分: 13501
  • 博客等级: 上将
  • 技术积分: 17974
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 18:11
文章分类

全部博文(1293)

文章存档

2019年(1)

2018年(1)

2016年(118)

2015年(257)

2014年(128)

2013年(222)

2012年(229)

2011年(337)

分类: 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;

}

 

 

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