2011-09-20 99 views
0

有誰知道如何計算文件系統佔用的空間量?在Windows中計算NTFS和FAT文件系統大小

我想計算多少空間文件和目錄在一個磁盤中佔用,而無需遍歷整個磁盤。

這是C++中的示例:

ULARGE_INTEGER freeBytesAvailable, totalNumberOfBytes, totalNumberOfFreeBytes; 
GetDiskFreeSpaceEx(NULL, &freeBytesAvailable, &totalNumberOfBytes, &totalNumberOfFreeBytes); 
mCurrentProgress = 0; 
mTotalProgress = totalNumberOfBytes.QuadPart - totalNumberOfFreeBytes.QuadPart; 

但問題是,我需要排除的文件系統的大小,但我不知道是否有可能或有一個API來獲取這個信息。

+0

我敢肯定,這是不可能的。我也沒有看到許多這種功能的真實世界用例。 –

+0

請定義「文件系統的大小」。你只計算MFT,目錄索引等,還是其他的東西?那麼大多數文件的最後一個集羣中未使用的空間呢?你是否對文件或文件系統計數?根據你的定義,這可能是不可能的,正如douphic指出的那樣。 –

+0

我們實際上正在編寫一個功能來調查磁盤中的所有用戶文件,並且需要爲操作提供進度信息,因爲它可能非常冗長。 我們不能通過整個磁盤(文件夾和文件)首先迭代計算數據的大小。這太耗費時間... 上面的代碼並不排除任何導致進度的文件系統,特別是在NTFS上,它與真實情況相差甚遠。 關閉我們可以得到所有用戶數據文件佔用的真實金額空間越好。 – user3608906

回答

1

沒有意義。在NTFS上,小文件被存儲在目錄中。我的意思是字面意思,他們是內聯的。保存文件名的相同扇區也保存文件內容。因此,您不能將該扇區計爲「用於文件」或「用於文件系統開銷」。