总结C/C++下读取文件大小的方法

来源:互联网 发布:koss sb45淘宝 编辑:程序博客网 时间:2024/06/05 16:45

C下:

1、依靠定位文件位置从而获得文件大小。

int GetFileSize(char *filename)  {  int  size = 0;  FILE  *fp = fopen(filename, "rb");  if (fp) {  fseek(fp, 0, SEEK_END);  size = ftell(fp);  fclose(fp);  }return size;} 

 

int GetFileSize(char *filename){int size = 0;FILE *fp = fopen(filename, "rb");if (NULL != fp){size = filelength(fileno(fp));}return size;}



 

2、直接读取文件属性得知文件大小。

 

int GetFileSize(char *filename){struct _stat buf;int result = -1;int size = 0;result = _stat( filename, &buf );if( result != 0 ){perror( "Problem getting information" );}else{size = buf.st_size;}return size;}


注:stat 结构定义于:/include/sys/stat.h 文件中,因此需要包含该文件,stat结构体定义如下

struct stat: mode_t st_mode; //文件对应的模式,文件,目录等 ino_t st_ino; //i-node节点号 dev_t st_dev; //设备号码 dev_t st_rdev; //特殊设备号码 nlink_t st_nlink; //文件的连接数 uid_t st_uid; //文件所有者 gid_t st_gid; //文件所有者对应的组 off_t st_size; //普通文件,对应的文件字节数 time_t st_atime; //文件最后被访问的时间 time_t st_mtime; //文件内容最后被修改的时间 time_t st_ctime; //文件状态(属性)改变时间 blksize_t st_blksize; //文件内容对应的块大小 blkcnt_t st_blocks; //文件内容对应的块数量


C++

利用Windows API或者MFC,得到文件大小。

1、利用MFC的CFile类

int GetFileSize(char *filename){bool iOpen = false;int size = 0;CFile cFile;iOpen = cFile.Open(filename, CFile::modeRead);if (iOpen){size = cFile.GetLength();}return size;}


2、利用windows API函数

int GetFileSize(char *filename){int size = 0;HANDLE handle = CreateFile(filename, FILE_READ_EA, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);if(handle != INVALID_HANDLE_VALUE){size = GetFileSize(handle, NULL);CloseHandle(handle);} return size;}



 

0 0
原创粉丝点击