fseek获取大于4G的文件大小的问题
2013-11-05 20:12
302 查看
最近在获取文件大小上遇到了问题,因为这到处找问题,最后才发现原来是在获取文件大小的时候出现了问题。言归正传:
以前获取文件大小的时候是这么做的:
fseek(fp,0,SEEK_END);
_length=ftell(fp);
fseek( fp, 0, SEEK_SET);
这个样子正常情况下是没问题的,但是在读取大于3、4G的时候就出现读错的情况,要么是-1,要么是_length数据类型的最大值,总之都是不对的。
解决办法是:
fpos_t pos;
fseek(fp,0,SEEK_END);
fgetpos(fp,&pos);
fseek( fp, 0, SEEK_SET);
pos即为文件的大小了,特地查了一下fpos_t,这个数据类型是定义在stdio.h文件里面的
typedef __int64 fpos_t;
可以了,就是这么个意思,这个样子就不用另外加什么库,或者有些说的用什么api或是windows就可以解决了!
以前获取文件大小的时候是这么做的:
fseek(fp,0,SEEK_END);
_length=ftell(fp);
fseek( fp, 0, SEEK_SET);
这个样子正常情况下是没问题的,但是在读取大于3、4G的时候就出现读错的情况,要么是-1,要么是_length数据类型的最大值,总之都是不对的。
解决办法是:
fpos_t pos;
fseek(fp,0,SEEK_END);
fgetpos(fp,&pos);
fseek( fp, 0, SEEK_SET);
pos即为文件的大小了,特地查了一下fpos_t,这个数据类型是定义在stdio.h文件里面的
typedef __int64 fpos_t;
可以了,就是这么个意思,这个样子就不用另外加什么库,或者有些说的用什么api或是windows就可以解决了!
相关文章推荐
- fseek获取大于4G的文件大小的问题
- 解决ewebeditor的上传组件与IIS大小限制导致无法上传大于200K文件的问题
- 解决Linux中在创建大于4g文件时遇到的File Size Limit Exceeded问题
- 如何通过ftell和fseek来获取文件大小
- tomcat7以上,ajax post参数后台获取不到的问题,post参数大小不能大于2M的解决办法!
- C++ 获取某文件的大小(字节数)(大文件读写,支持大于2GB文件)
- 遇到问题---java获取网络文件大小失败getContentLength()为-1 完整解决方法
- SQLServer的一个奇怪问题:数据库文件不能大于4G?
- 遇到问题---java获取网络文件大小失败getContentLength()为-1 完整解决方法
- 获取ftpserver 文件大小的问题
- linux中打开大文件的问题(大于4G)
- 通过input 的file 控件,上传图片,如何获取文件的大小问题
- 通过文件指针来获取文件的大小(fseek与ftell函数 )
- 解决<s:file>上传文件大小和 不能获取文件问题
- 滴水穿石--IIS中的200K文件或者Request获取内容大小限制问题
- VC获取文件大小的一些问题
- 获取4G以上的文件大小
- 关于fseek不能定位大于2G文件的问题
- linux获取目录下文件大小的问题
- 对于如何让u盘考入大于4G的单个文件的问题