如果一个文件是文本文件,我们一般使用
FILE *pf = fopen("file", "r");
fseek( pf, 0, SEEK_END );
int size = ftell( pf );
获取文件大小,如果是打开二进制文件,则是
FILE *pf = fopen("file", "rb");
但是对于二进制文件这个方法不一定可行:
1. 对于小文件,这个方法可行,测试大小8M多的文件
2. 对于大文件,这个方法不可行,测试大小为25G的文件,获取到大小为4百多M
原因是
fseek( pf, 0, SEEK_END );
对于二进制文件是不可预知的行为。
我们可以使用
#include <sys/stat.h>
struct stat st;
stat(filename, &st);
size = st.st_size;
如果是大过4G的文件,则使用
#include <sys/stat.h>
struct stat64 st;
stat64(filename, &st);
size = st.st_size;
windows下面使用 _stat64
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.