2016-11-03 122 views
0

我使用tellg()來獲取某些文件的大小,這對於此項目獲得真實/正確大小的文件非常重要。現在我有點擔心,因爲tellg()讀取不完美,但可能會得到錯誤的大小,可能比實際大小還要大。例如:tellg() function give wrong size of file?如何使用C++獲取文件的實際大小?

如何獲得正確的尺寸?或者tellg不是很好嗎?

這是我的代碼tellg()

streampos begin,end; 
    ifstream file_if(cpd_file, ios::binary); 
    begin = file_if.tellg(); 
    file_if.seekg(0, ios::end); 
    end = file_if.tellg(); 
    file_if.close(); 
    size = end - begin; 
+0

在某些操作系統(特別是Linux)的*另一個*過程可能修改打開的文件,所以這個問題可能沒有任何意義(換句話說,檢索的大小總是近似的)。 –

+0

@BasileStarynkevitch好的,但我不認爲這是我在上面鏈接的問題找到的問題..不是? – Droide

回答

3

要獲得文件的大小等信息,喜歡它的創作和修改時間,它的所有者,權限等,您可以使用stat()函數。

#include <sys/types.h> 
#include <sys/stat.h> 
#include <unistd.h> 

struct stat s; 
if (stat("path/to/file.txt", &s)) { 
    // error 
} 

printf("filesize in bytes: %u\n", s.st_size); 

文檔:

相關問題