在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函式返回檔案指標當前位置相對應檔案首的偏...