C C 獲取檔案大小

2021-09-08 18:37:42 字數 1155 閱讀 5211

在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)  

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

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

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

#include 

int file_size2(char* filename)  

這種方式首先獲得相關檔案的狀態資訊,然後從狀態資訊中讀取大小資訊。由於沒有讀取檔案的操作,所以操作速度非常快。強烈建議大家在linux下使用這種方式。windows平台下肯定也有類似的函式讀取檔案資訊,不過本人常年不在windows下程式設計,所以在此不做介紹。

另外,可以利用statfs函式檢視磁碟空間:

#include #include 

intmain()

C C 語言獲取檔案大小

在c語言中測試檔案的大小,主要使用二個標準函式。1.fseek 函式原型 int fseek file stream,long int offset,int origin 引數說明 stream,檔案流指標 offest,偏移量 orgin,原 始位置。其中orgin的可選值有seek set 檔案...

獲取檔案大小

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

C C 多種方法獲取檔案大小

c 如何得到檔案的大小 先用fopen開啟檔案,然後把檔案指標指向檔案尾.再用ftell獲得檔案指標當前位置 即檔案長度 源 include stdafx.h include include using namespace std int main fseek fp,0,seek end 定位到檔案...