Linux 下C語言獲取檔案大小

2022-09-28 20:30:24 字數 716 閱讀 4464

linux 下c語言獲取檔案大小

c語言是一種比較底層的語言,有時在其他語言中很容易操作的事情,在c語言中就比較麻煩,例如獲取乙個檔案的大小。j**a中file類有個length函式,python中os.path包中有個getsize函式,c語言中卻沒有程式設計客棧直接對應的函式獲取檔案大小。

目前,網上有一種流傳很廣的方法,讀取檔案到記憶體,然後跳轉到檔案末尾,檢視跳轉的長度。**如下:

int file_size(char* filename)

上述方法利用fseek移動乙個檔案的訪問位置到檔案的末尾,然後利用ftell獲得目前的檔案訪問位置。這種方法可以認為是一種間接的獲取方式。雖說可以獲得檔案大小,但是有兩個缺點。首先,ftell的返回值為long,在不同環境下占用的位元組數也不同,這就可能存在long是四個位元組的情況。此時,獲取的檔案大小就不能超過2g,否則就會出錯。

但是,上述缺點在大多數情況下都沒問題,超大檔案還可以通過fsetpos和fgetpos獲取檔案大小。最致命的缺陷就是它需要載入檔案到記憶體,然後跳轉到檔案末尾,這個操作非常耗時!可能在讀取少量檔案時體現不出,但是當檔案達到上萬個時,速度就會慢的要命,這種方法相當於把所有的檔案都讀到記憶體中一遍!

如果可能,盡量避免採用上述間接的方式獲取檔案大小。在linux下,還有一種更簡單的方式,通過讀取檔案資訊獲得檔案大小,速度也快很多。**如下:

#include

int file_size2(char* filename)

獲取檔案大小(C語言)

方法一 利用純c語言來獲取檔案大小 unsigned long get file size const char filename fseek fp,0l,seek end size ftell fp fclose fp return size 注 ftell函式返回檔案指標當前位置相對應檔案首的偏...

C語言獲取檔案大小(長度)

實際開發中,有時候需要先獲取檔案大小再進行下一步操作。c語言沒有提供獲取檔案大小的函式,要想實現該功能,必須自己編寫函式。ftell 函式用來獲取檔案內部指標 位置指標 距離檔案開頭的位元組數,它的原型為 long int ftell file fp 注意 fp 要以二進位制方式開啟,如果以文字方式...

linux獲取檔案大小

摘自 unsigned long get file size const char filename fseek fp,seek set,seek end size ftell fp fclose fp return size 沒有想到的是,在程式執行後發現有的檔案能正確的獲取大小,而有的檔案則不能...