教会你Linux获取文件大小方法
创始人
2024-06-15 13:01:51
0

在我们学习生活中经常会遇到问题和困难,就比如说我们在学习Linux时,比如怎样Linux获取文件大小的方法。前几天在工作中需要写一段代码,获取一些视频文件的大小,心想:这还不简单吗?直接用标准C的文件操作函数就OK了。于是写了下面的一段代码来实现:

  1. unsigned long get_file_size(const char *filename)  
  2. {  
  3.     unsigned long size;  
  4.     FILE* fp = fopen( filename, "rb" );  
  5.     if(fp==NULL)  
  6.     {  
  7.         printf("ERROR: Open file %s failed.\n", filename);  
  8.         return 0;  
  9.     }  
  10.     fseek( fp, SEEK_SET, SEEK_END );  
  11.     size=ftell(fp);  
  12.     fclose(fp);  
  13.     return size;  

没有想到的是,在程序执行后发现有的文件能正确的获取大小,而有的文件则不能正确的获取到文件大小,检查了代码,也没有发现有什么不对的地方。但是在这过程中发现了一个问题,就是能正确获取大小的文件都是相对比较小的文件,而出现错误的都是很大的文件。于是想到会不会是因为标准 C文件操作函数对超过一定大小的文件不支持所造成的呢,于是Google了一下,没想到猜测是正确的,标准C的文件操作函数不支持对超过2G的文件读取。

问题找到了,看来只有换一种方法来实现了,因为平时很少用到标准C的一些函数,所以,又只有求助于Google了,在看了网上不少的参考文章之后,发现调用stat函数可以正确的得到超大文件的状态信息(当然包括文件大小),于是最终实现了如下的代码:

  1. unsigned long get_file_size(const char *filename)  
  2. {  
  3.     struct stat buf;  
  4.     if(stat(filename, &buf)<0)  
  5.     {  
  6.         return 0;  
  7.     }  
  8.     return (unsigned long)buf.st_size;  

 从写这么一个小小功能的函数可以看出,平时多积累一些计算机方面的知识真的是很重要的,同时对代码的全面测试也是相当重要的,否则,看着很正确的代码可能在某些情况下会给你带来意想不到的麻烦。 这样你就能学会Linux获取文件大小的方法了。              

【编辑推荐】

  1. 掌握操作技巧 玩转Linux桌面操作系统
  2. 各种各样的Linux来自Linux个人开发者
  3. 伦敦证券启用Linux操作系统平台
  4. Linux基金会大动作
  5. Linux操作系统:普通用户安全执行管理员程序

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...