VC獲取檔案大小的方法

2021-06-19 18:41:09 字數 931 閱讀 3285

unsigned long get_file_size(const char *filename)

unsigned long size;

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

if(fp==null)

printf("error: open file %s failed.\n", filename);

return 0;

}

fseek( fp, seek_set, seek_end );

size=ftell(fp);

fclose(fp);

return size; }

沒有想到的是,在程式執行後發現有的檔案能正確的獲取大小,而有的檔案則不能正確的獲取到檔案大小,檢查了**,也沒有發現有什麼不對的地方。但是在這過程中發現了乙個問題,就是能正確獲取大小的檔案都是相對比較小的檔案,而出現錯誤的都是很大的檔案。於是想到會不會是因為標準c檔案操作函式對超過一定大小的檔案不支援所造成的呢,於是google了一下,沒想到我的猜測是正確的,標準c的檔案操作函式不支援對超過2g的檔案讀取。

問題找到了,看來只有換一種方法來實現了,因為平時很少用到標準c的一些函式,所以,又只有求助於google了,在看了網上不少的參考文章之後,發現呼叫stat函式可以正確的得到超大檔案的狀態資訊(當然包括檔案大小),於是最終實現了如下的**:

#include

unsigned long get_file_size(const char *filename)

return (unsigned long)buf.st_size; }

從寫這麼乙個小小功能的函式可以看出,平時多積累一些計算機方面的知識真的是很重要的,同時對**的全面測試也是相當重要的,否則,看著很正確的**可能在某些情況下會給你帶來意想不到的麻煩。 



VC獲取檔案大小

vc獲取檔案大小 我查到兩種方法 方法一 win32 find data fileinfo handle hfind dword filesize const char filename 檔案的路徑及名字 hfind findfirstfile filename fileinfo if hfind ...

獲取檔案大小

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 定位到檔案...