1. 程式人生 > >檔案大小與佔用空間大小不同的原因

檔案大小與佔用空間大小不同的原因

1."檔案大小”與“所佔空間”的差別
為了便於大家理解,我們先來看兩個例子:


例1:找到D盤上的Ersave2.dat檔案,用滑鼠右鍵單擊該檔案,選擇“屬性”,即可開啟對話方塊,我們可以看到,Ersave2.dat的實際大小為655,628 Byte(位元組),但它所佔用的空間卻為688,128 Byte,兩者整整相差了32KB。


例2:同樣是該檔案,將它複製到C盤,檢視其屬性後,你會驚奇地發現它的大小和所佔空間的差別不相同了!


顯然,在這些情況中,檔案的實際大小沒有變化,但在不同的磁碟上它所佔的空間卻都有變化。事實上,只要我們理解了檔案在磁碟上的儲存機制後,就不難理解上述的情況了。檔案的大小其實就是檔案內容實際具有的位元組數,它以Byte為衡量單位,只要檔案內容和格式不發生變化,檔案大小就不會發生變化。但文 件在磁碟上的所佔空間卻不是以Byte為衡量單位的,它最小的計量單位是“簇(Cluster)”。

小知識:什麼是簇?
檔案系統是作業系統與驅動器之間的介面,當作業系統請求從硬盤裡讀取一個檔案時,會請求相應的檔案系統(FAT 16/32/NTFS)開啟檔案。扇區是磁碟最小的物理儲存單元,但由於作業系統無法對數目眾多的扇區進行定址,所以作業系統就將相鄰的扇區組合在一起, 形成一個簇,然後再對簇進行管理。每個簇可以包括2、4、8、16、32或64個扇區。顯然,簇是作業系統所使用的邏輯概念,而非磁碟的物理特性。
為了更好地管理磁碟空間和更高效地從硬碟讀取資料,作業系統規定一個簇中只能放置一個檔案的內容,因此檔案所佔用的空間,只能是簇的整數倍;而如果檔案實 際大小小於一簇,它也要佔一簇的空間。所以,一般情況下檔案所佔空間要略大於檔案的實際大小,只有在少數情況下,即檔案的實際大小恰好是簇的整數倍時,檔案的實際大小才會與所佔空間完全一致。



2.分割槽格式與簇大小
在例2中,同一個檔案在不同磁碟分割槽上所佔的空間不一樣大小,這是由於不同磁碟簇的大小不一樣導致的。簇的大小主要由磁碟的分割槽格式和容量大小來決定,C盤採用FAT 32分割槽,容量為4.87GB,簇大小為8KB;D盤採用FAT 32分割槽,容量為32.3GB,簇大小為32KB。計算檔案所佔空間時,可以用如下公式:
簇數=取整(檔案大小/簇大小)+1
所佔空間=簇數×磁碟簇大小
公式中檔案大小和簇大小應以Byte為單位,否則可能會產生誤差。如果要以KB為單位,將位元組數除以1024即可。利用上述的計算公式,可以計算ersave2.dat檔案的實際佔用空間。

3.輕鬆檢視簇大小
①用Chkdsk檢視簇大小
在Windows作業系統中,我們可以使用Chkdsk命令檢視硬碟分割槽的簇大小。例如我們要在Windows XP下檢視C盤的簇大小,可以單擊“開始→執行”,鍵入“CMD”後回車,再鍵入“C:”後回車,然後輸入“Chkdsk”後回車,稍候片刻從它的分析結 果中,我們就可以得到C盤的簇大小,不過它把簇稱之為“分配單元”或者“Allocation unit”。
②用PQ Magic等磁碟工具來檢測
很多磁碟工具都具備磁碟資訊顯示等功能。例如在PQ Magic中,選擇要檢視的磁碟分割槽,然後單擊右鍵選擇“高階→調整簇大小”功能,即可從顯示的對話方塊中可以看到該磁碟當前設定的簇大小。
③手工檢視
手動建立一個100位元組以下的文字文件。然後將該檔案複製到欲檢視簇大小的磁碟分割槽中,在Windows下顯示該檔案的屬性,其中“所佔空間”處顯示的數值就是簇大小.

以下說明一下檔案大小和佔用空間大小不同的相關解釋:

      首先說明一下,檔案的大小和其所佔用的空間存在一定的差異是肯定的,這個現象起始的原因就是因為系統的檔案和索引,為了方面系統更便捷的管理檔案,作業系統使用檔案系統對各種檔案進行管理(檔案系統就是我們經常說的FAT32和NTFS等),檔案系統將硬碟分為很多個“簇”

      以FAT32檔案系統為例,fat32檔案系統的簇大小是4KB。當我們要儲存一個1KB的檔案,那麼它將佔用4KB的空間,要儲存2KB的檔案,所佔用的檔案大小也是4KB,而要儲存2個2KB大小的檔案時,其所佔用的空間就為8KB。以此類推。

      所以,當我們儲存非常多的小檔案的時候,其所佔用的空間就越大,但很可能其實際的檔案大小卻很小,也就是這個道理。同理,一個檔案越大,其佔用的空間也就越小。

      說簡單一點,拿倉庫做比方,我們有100個倉庫,為了好管理和查詢,我們可能會把各種不同的物品分別放入不同的倉庫,但是這個物品很可能不能填滿倉庫,那麼它仍然也是佔用了倉庫的所有空間的。那麼可能有人問了,為什麼不把這個倉庫多放東西,好節約空間,但是這樣的話很可能你找很久久沒有辦法找到你所要的東西,其效能就非常低了。同理。