Linux下求取文件长度的几种常用方法

简介: 在文件IO的编程过程中,经常会遇到如何求取文件长度的问题,这里,我将工作及教学中积累的一些常用方法写出来与大家分享。   第一类:lseek/fseek   1、lseek 代码片段: int GetFileSize( char *_pName  ) { int iF...

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

}

 

 

相关文章
|
16天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
19 0
|
1天前
|
人工智能 Linux
Linux查找大文件的方法
Linux查找大文件的方法
|
3天前
|
固态存储 Ubuntu Linux
Linux(29) 多线程快速解压缩|删除|监视大型文件
Linux(29) 多线程快速解压缩|删除|监视大型文件
11 1
|
3天前
|
Ubuntu Linux 数据安全/隐私保护
Linux(24) 如何在Ubuntu中操作rootfs.img文件
Linux(24) 如何在Ubuntu中操作rootfs.img文件
9 0
|
8天前
|
安全 Linux 开发工具
Linux中可引起文件时间戳改变的相关命令
【4月更文挑战第12天】Linux中可引起文件时间戳改变的相关命令
17 0
|
9天前
|
Linux Shell 开发工具
Linux文件常用操作
Linux文件常用操作(几乎覆盖所有日常使用)
84 0
|
10天前
|
Linux 内存技术 Perl
【ZYNQ】制作从 QSPI Flash 启动 Linux 的启动文件
【ZYNQ】制作从 QSPI Flash 启动 Linux 的启动文件
|
16天前
|
Linux
linux 超过4个G的文件传不上去的解决办法
linux 超过4个G的文件传不上去的解决办法
9 0
|
16天前
|
Linux 索引
linux 文件查找 和文件管理常用命令
linux 文件查找 和文件管理常用命令
22 0
|
16天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
28 0