Linux下获取文件大小的方法
来源:互联网 发布:设计logo的软件 编辑:程序博客网 时间:2024/06/07 06:44
前几天在工作中需要写一段代码,获取一些视频文件的大小,心想:这还不简单吗?直接用标准C 的文件操作函数就OK了。于是写了下面的一段代码来实现:
unsigned long get_file_size(const char *filename)
{
unsigned long size;
FILE* fp = fopen( filename, "rb" );
if(fp==NULL)
{
printf("ERROR: Open file %s failed./n", filename);
return 0;
}
fseek( fp, SEEK_SET, SEEK_END );
size=ftell(fp);
fclose(fp);
return size;
}
没有想到的是,在程序执行后发现有的文件能正确的获取大小,而有的文件则不能正确的获取到文件大小,检查了代码,也没有发现有什么不对的地方。但是在这过程中发现了一个问题,就是能正确获取大小的文件都是相对比较小的文件,而出现错误的都是很大的文件。于是想到会不会是因为标准C文件操作函数对超过一定大小的文件不支持所造成的呢,于是Google了一下,没想到我的猜测是正确的,标准C的文件操作函数不支持对超过2G的文件读取。
问题找到了,看来只有换一种方法来实现了,因为平时很少用到标准C的一些函数,所以,又只有求助于Google了,在看了网上不少的参考文章之后,发现调用stat函数可以正确的得到超大文件的状态信息(当然包括文件大小),于是最终实现了如下的代码:
unsigned long get_file_size(const char *filename)
{
struct stat buf;
if(stat(filename, &buf)<0)
{
return 0;
}
return (unsigned long)buf.st_size;
}
从写这么一个小小功能的函数可以看出,平时多积累一些计算机方面的知识真的是很重要的,同时对代码的全面测试也是相当重要的,否则,看着很正确的代码可能在某些情况下会给你带来意想不到的麻烦。
原文:http://blog.csdn.net/simon_dong618/article/details/2237171
- Linux下获取文件大小的方法
- Linux下获取文件大小的方法
- Linux下获取文件大小的方法
- Linux下获取文件大小的方法
- Linux下获取文件大小的方法
- linux下C获取文件大小的方法
- Linux下获取文件大小的方法
- Linux下获取文件大小方法汇总
- linux下获取文件大小
- linux获取目录下文件大小的问题
- linux获取文件大小的几种方法
- 获取文件大小的方法
- 获取文件大小的方法
- linux下获取文件大小总结
- linux c 下获取文件大小
- linux c 下获取文件大小
- linux c下获取文件大小
- 获取文件大小的方法(转)
- 1.malloc函数
- 计科《算法设计与分析》第四周作业——无向图的DFS算法
- javascript事件列表
- 操作系统之进程同步
- MongoDB学习之旅二:MongoDB安装及配置
- Linux下获取文件大小的方法
- C#的FFT算法
- realloc函数:
- 不去触及彼此的心伤
- excle函数大全
- 解决Teamviewer屏保锁屏、黑屏无法进入问题
- Java利用flexpaper插件实现文档在线预览
- [[UIScreen mainScreen] bounds]和 applicationFrame
- HttpsUrlConnection https双向验证