linux获取文件大小 - china_blue - 博客园
来源:百度文库 编辑:神马文学网 时间:2024/04/26 20:04:14
linux获取文件大小
摘自: http://os.51cto.com/art/200912/168700.html
在我们学习生活中经常会遇到问题和困难,就比如说我们在学习Linux时,比如怎样Linux获取文件大小的方法。前几天在工作中需要写一段代码,获取一些视频文件的大小,心想:这还不简单吗?直接用标准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函数可以正确的得到超大文件的状态信息(当然包括文件大小),于是最终实现了如下的代码:
从写这么一个小小功能的函数可以看出,平时多积累一些计算机方面的知识真的是很重要的,同时对代码的全面测试也是相当重要的,否则,看着很正确的代码可能在某些情况下会给你带来意想不到的麻烦。 这样你就能学会Linux获取文件大小的方法了
- unsigned long get_file_size(const char *filename)
- {
- struct stat buf;
- if(stat(filename, &buf)<0)
- {
- return 0;
- }
- return (unsigned long)buf.st_size;
- }
linux获取文件大小 - china_blue - 博客园
从网络上获取国际标准时间 - hzy_dl - 博客园
WinAPI: WindowFromPoint- 获取指定点所在窗口的句柄 - 万一的 Delphi 博客 - 博客园
FLASH如何修改文件大小
如何从mp3,wma等音频文件中获取歌曲信息 - 榕树下。。。 - 博客园
网易博客如何获取代码--二(图文)
如何查看Linux 硬件配置信息 - 无度 - 博客园
Linux下DHCP不能自动获取IP问题解决 - ZERO-H - JavaEye技术网站
影响Flash文件大小的因素
影响Flash文件大小的因素
PHP获取当前目录!_学习_Aiens的博客
高速获取别人IP地址 - llong的日志 - 网易博客
网易博客如何获取代码(图/文)
[转] 利用博客和邮件转发获取流量
怎样获取天使资金 -何艾亲-搜狐博客
获取留学全额奖学金的最优途径-叶航-搜狐博客
网易博客如何获取代码(图/文)
怎样运营和讯博客快速获取流量
IE7自动完成口令获取 - 暖月无痕 - 51CTO技术博客
对linux安全设置中需要注意和掌握的地方 - OldHawk - 博客园
Linux的五个查找命令 - Visit Shenzhen, Shenzhen China, Shenzhen Travel Guide - 博客园
在Linux里设置环境变量的方法(export PATH) - 玉米疯收 - 博客园
Linux常用命令之vmstat--rainnyzhong的博客
linux常用命令使用详解--awk-ZOL博客