C 獲取檔案大小

2021-08-28 23:07:40 字數 1215 閱讀 3101

在c語言中測試檔案的大小,主要使用二個標準函式。

1.fseek 

函式原型:intfseek( file * stream, long int offset, int origin );

引數說明:stream,檔案流指標;offest,偏移量;orgin,原(始位置。其中orgin的可選值有seek_set(檔案開始)、seek_cur(檔案指標當前位置)、seek_end(檔案結尾)。

函式說明:對於二進位制模式開啟的流,新的流位置是origin + offset。

2.ftell

函式原型:long intftell( file * stream );

函式說明:返回流的位置。對於二進位製流返回值為距離檔案開始位置的位元組數。

獲取檔案大小c程式:

int file_size(char* filename)  

file *fp=fopen(filename,"r");  

if(!fp) return -1;  

fseek(fp,0l,seek_end);  

int size=ftell(fp);  

fclose(fp);      

return size;  

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

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

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

#include 

int file_size(char* filename)

還可以利用statfs函式檢視磁碟空間:

#include #include int main()  

C 獲取檔案大小

當然了都需要引入system.io這個命名空間 第乙個 public static long getdirectorylength string dirpath 獲取di中所有的資料夾,並存到乙個新的物件陣列中,以進行遞迴 directoryinfo dis di.getdirectories if...

獲取檔案大小

1 找到檔案所在的絕對路徑。系統路徑 projectpath request.getsession getservletcontext getrealpath 檔案路徑 在上傳檔案的時候,一定會有檔案相對路徑,如果不清楚,可以打斷點然後在本地找到此檔案。檔案相對路徑 filepath 絕對路徑rea...

獲取檔案大小(C語言)

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