自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

教會你Linux獲取文件大小方法

系統(tǒng) Linux
在我們學習生活中經(jīng)常會遇到問題和困難,就比如說我們在學習Linux時,比如怎樣Linux獲取文件大小的方法。前幾天在工作中需要寫一段代碼,獲取一些視頻文件的大小,心想:這還不簡單嗎?直接用標準C的文件操作函數(shù)就OK了。

在我們學習生活中經(jīng)常會遇到問題和困難,就比如說我們在學習Linux時,比如怎樣Linux獲取文件大小的方法。前幾天在工作中需要寫一段代碼,獲取一些視頻文件的大小,心想:這還不簡單嗎?直接用標準C的文件操作函數(shù)就OK了。于是寫了下面的一段代碼來實現(xiàn):

  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;  

沒有想到的是,在程序執(zhí)行后發(fā)現(xiàn)有的文件能正確的獲取大小,而有的文件則不能正確的獲取到文件大小,檢查了代碼,也沒有發(fā)現(xiàn)有什么不對的地方。但是在這過程中發(fā)現(xiàn)了一個問題,就是能正確獲取大小的文件都是相對比較小的文件,而出現(xiàn)錯誤的都是很大的文件。于是想到會不會是因為標準 C文件操作函數(shù)對超過一定大小的文件不支持所造成的呢,于是Google了一下,沒想到猜測是正確的,標準C的文件操作函數(shù)不支持對超過2G的文件讀取。

問題找到了,看來只有換一種方法來實現(xiàn)了,因為平時很少用到標準C的一些函數(shù),所以,又只有求助于Google了,在看了網(wǎng)上不少的參考文章之后,發(fā)現(xiàn)調(diào)用stat函數(shù)可以正確的得到超大文件的狀態(tài)信息(當然包括文件大?。?,于是最終實現(xiàn)了如下的代碼:

  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;  

 從寫這么一個小小功能的函數(shù)可以看出,平時多積累一些計算機方面的知識真的是很重要的,同時對代碼的全面測試也是相當重要的,否則,看著很正確的代碼可能在某些情況下會給你帶來意想不到的麻煩。 這樣你就能學會Linux獲取文件大小的方法了。              

【編輯推薦】

  1. 掌握操作技巧 玩轉(zhuǎn)Linux桌面操作系統(tǒng)
  2. 各種各樣的Linux來自Linux個人開發(fā)者
  3. 倫敦證券啟用Linux操作系統(tǒng)平臺
  4. Linux基金會大動作
  5. Linux操作系統(tǒng):普通用戶安全執(zhí)行管理員程序
責任編輯:小霞 來源: 清華大學出版社
相關推薦

2009-12-09 14:56:54

Linux查看目錄文件

2009-12-15 14:29:04

2009-12-25 17:35:39

Linux安裝real

2009-06-26 10:05:10

獲取文件大小

2009-12-14 18:04:38

Linux命令創(chuàng)建快照

2010-02-02 10:46:51

C++獲取文件大小

2009-12-15 17:10:39

優(yōu)化Linux

2009-12-21 14:13:04

重復行uniq

2010-05-27 16:58:11

Linux查看文件大小

2010-05-24 10:16:40

SWaP分區(qū)

2009-12-10 10:40:21

Linux ldd

2009-12-17 13:40:42

Linux網(wǎng)卡安裝

2019-07-31 08:55:01

LinuxUbuntu技術(shù)

2010-10-29 15:26:29

Oracle日志文件

2011-04-02 16:38:49

Cactirrd

2009-12-11 10:55:16

Linux啟動腳本

2010-01-07 15:00:39

Redhat Ente

2009-12-14 17:13:04

Linux系統(tǒng)修改共享

2009-12-14 16:31:00

Linux安裝支付寶

2020-07-22 07:45:00

JavaScript開發(fā)技術(shù)
點贊
收藏

51CTO技術(shù)棧公眾號