1. “文件大小”與“所占空間”的差別
為了便於大家理解,我們先來看兩個例子:
例1 找到D盤上的Ersave2.dat文件,用鼠標右鍵單擊該文件,選擇“屬性”,即可打開如圖1所示的對話框,我們可以看到,Ersave2.dat的實際大小為655,628 Byte(字節),但它所占用的空間卻為688,128 Byte,兩者整整相差了32KB。
例2 同樣是該文件,如果將它復制到A盤,你會發現該文件實際大小和所占空間基本一致,同為640KB,但字節數稍有差別。再將它復制到C盤,查看其屬性後,你會驚奇地發現它的大小和所占空間的差別又不相同了!
顯然,在這三種情況中,文件的實際大小沒有變化,但在不同的磁盤上它所占的空間卻都有變化。事實上,只要我們理解了文件在磁盤上的存儲機制後,就不難理解上述的三種情況了。文件的大小其實就是文件內容實際具有的字節數,它以Byte為衡量單位,只要文件內容和格式不發生變化,文件大小就不會發生變化。但文件在磁盤上的所占空間卻不是以Byte為衡量單位的,它最小的計量單位是“簇(Cluster)”。
小知識:什麼是簇?
文件系統是操作系統與驅動器之間的接口,當操作系統請求從硬盤裡讀取一個文件時,會請求相應的文件系統(FAT 16/32/NTFS)打開文件。扇區是磁盤最小的物理存儲單元,但由於操作系統無法對數目眾多的扇區進行尋址,所以操作系統就將相鄰的扇區組合在一起,形成一個簇,然後再對簇進行管理。每個簇可以包括2、4、8、16、32或64個扇區。顯然,簇是操作系統所使用的邏輯概念,而非磁盤的物理特性。
為了更好地管理磁盤空間和更高效地從硬盤讀取數據,操作系統規定一個簇中只能放置一個文件的內容,因此文件所占用的空間,只能是簇的整數倍;而如果文件實際大小小於一簇,它也要占一簇的空間。所以,一般情況下文件所占空間要略大於文件的實際大小,只有在少數情況下,即文件的實際大小恰好是簇的整數倍時,文件的實際大小才會與所占空間完全一致。
2. 分區格式與簇大小
在例2中,同一個文件在不同磁盤分區上所占的空間不一樣大小,這是由於不同磁盤簇的大小不一樣導致的。簇的大小主要由磁盤的分區格式和容量大小來決定,其對應關系如表1所示。
筆者的軟盤采用FAT分區,容量1.44MB,簇大小為512 Byte(一個扇區);C盤采用FAT 32分區,容量為4.87GB,簇大小為8KB;D盤采用FAT 32分區,容量為32.3GB,簇大小為32KB。計算文件所占空間時,可以用如下公式:
簇數=取整(文件大小/簇大小)+1
所占空間=簇數×磁盤簇大小
公式中文件大小和簇大小應以Byte為單位,否則可能會產生誤差。如果要以KB為單位,將字節數除以1024即可。利用上述的計算公式,可以計算ersave2.dat文件的實際占用空間,如表2所示。
3. 輕松查看簇大小
①用Chkdsk查看簇大小
在Windows操作系統中,我們可以使用Chkdsk命令查看硬盤分區的簇大小。例如我們要在Windows XP下查看C盤的簇大小,可以單擊“開始→運行”,鍵入“CMD”後回車,再鍵入“C:”後回車,然後輸入“Chkdsk”後回車,稍候片刻從它的分析結果中,我們就可以得到C盤的簇大小,不過它把簇稱之為“分配單元”或者“Allocation unit”,如圖2所示。
②用PQ Magic等磁盤工具來檢測
很多磁盤工具都具備磁盤信息顯示等功能。例如在PQ Magic中,選擇要查看的磁盤分區,然後單擊右鍵選擇“高級→調整簇大小”功能,即可從顯示的對話框中可以看到該磁盤當前設置的簇大小,如圖3所示。
③手工查看
手動創建一個100字節以下的文本文檔。然後將該文件復制到欲查看簇大小的磁盤分區中,在Windows下顯示該文件的屬性,其中“所占空間”處顯示的數值就是簇大小。