共用方式為


機密的視窗:到底是什麼是 '磁碟大小'?

當您為資料夾的大小統計資料,,完全,這些度量來自何處?

Raymond 存取許可權

當您按一下滑鼠右鍵以檢視資料夾的屬性時,屬性工作表會包含兩個值:大小及磁碟大小。 完全這些值代表什麼? 他們要測量什麼?

屬性工作表執行天真遞迴目錄搜尋的所有檔案。 它不會嘗試篩選掉的硬式連結至相同的基礎檔案參照的檔案名稱。 如果您不能存取子目錄,遞迴目錄搜尋會略過該子目錄,以及這些檔案將不會計算在總資料夾的大小。

其實,遞迴目錄搜尋其中包含了一些聰明的設計。 其中一部份正在故意智慧:它會偵測重新分析點,並不會遞迴方式置入它們。 另一個組件正被意外智慧:符號連結的檔案計數為零大小。 這不是因為目錄搜尋程式碼是聰明的相關檔案。 這是因為符號連結的目錄項目會報告它們為具有大小為零。 現在您知道哪些檔案會被計算進去,但這些數字來自何處?

大小是個問題

大小度量很簡單:它是檔案大小的執行清點結果報告的 [尋找­第一­WIN32_FIND_DATA 中檔案函式。 nFile­大小­低 」 和 「 nFile­大小­高。 提醒您,這些值並不一定精確可能是因為方式 NTFS 檔案系統更新目錄項目。 這是主題的另一天,但精簡版仍然正在寫入的檔案可能不會報告精確的檔案大小直到關閉檔案控制代碼。 即使如此,它只會更新用來開啟檔案的目錄項目。

在磁碟度量的大小會變得更加複雜。 如果磁碟機支援的壓縮 (報告取得所傳回的 FILE_FILE_COMPRESSION 旗標­磁碟區­資訊函式) 和檔案壓縮或疏鬆 (FILE_ATTRIBUTE_COMPRESSED,FILE_ATTRIBUTE_SPARSE_FILE),然後在檔案的磁碟上的大小是取得所報告的值­壓縮­檔案­大小函式。 這會報告檔 (如果有壓縮) 的壓縮的大小或減去 de-committed 和邏輯上 (如果疏鬆) 視為零組件檔的大小。 如果檔案是不壓縮或疏鬆的那麼在磁碟上的大小是 [尋找所報告的檔案大小­第一­檔案進位到最近的叢集的函式。

Windows 95 小組最初開發上磁碟演算法的大小。 檔案系統世界有關已偏移 MS-DOS 背景。 唯一的磁碟檔案系統發生 FAT。 發生這類的硬式連結或替代資料流。 檔案內容儲存於叢集的單位。

Ntfs,這些假設不維持 true,不包括"檔案內容會儲存在叢集的單位"組件。 在 NTFS,檔案可能耗用零叢集為其資料的 stashing 本身到主檔案表格 (MFT) 中的可寬延時間空間。 (如需詳細資訊的說明,請參閱 「NTFS 檔案成長的四個階段。")

當然,在磁碟演算法大小並未考慮到其他檔案系統的額外負荷,像本身、 目錄項目資訊、 檔案中繼資料以及替代資料流的磁碟空間所佔用的檔案名稱。

在磁碟上報告的大小及大小的值不是用來增加磁碟可用空間上的目錄的總影響力位元組對位元組計量。 它們只是根據的假設是大部分的檔案屬於無聊的各種不同的概略估計。 由,我是指任何硬式連結及微不足道使用替代資料流。 如果您有許多的硬式連結的目錄,例如 Windows 目錄本身,例如,值便為關閉的方式。

您可以使用大小在磁碟上做為簡單測試取得目錄的大小大概知道,但是請記住很天真計算。 如果您需要在磁碟消耗上保留小心定位點,您會是最好使用磁碟配額,其目的是要更有效地追蹤磁碟消耗類似的功能。

Raymond_Chen

RRaymond Chen的網站,的老新玩意兒,和 Windows 歷程記錄,Win32 程式設計而告訴 jokes 三年的年少來處理相同標題為的活頁簿 (Addison-Wesley,2007年)。

相關的內容