天天看點

檔案大小和占用空間

1.“檔案大小”與“所占空間”的差别

為了便于大家了解,我們先來看兩個例子:

例1:找到d盤上的ersave2.dat檔案,用滑鼠右鍵單擊該檔案,選擇“屬性”,即可打開對話框,我們可以看到,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檔案的實際占用空間。

3.輕松檢視簇大小

①用chkdsk檢視簇大小

在windows作業系統中,我們可以使用chkdsk指令檢視硬碟分區的簇大小。例如我們要在windows xp下檢視c盤的簇大小,可以單擊“開始→運作”,鍵入“cmd”後回車,再鍵入“c:”後回車,然後輸入“chkdsk”後回車,稍候片刻從它的分析結 果中,我們就可以得到c盤的簇大小,不過它把簇稱之為“配置設定單元”或者“allocation unit”。

②用pq magic等磁盤工具來檢測

很多磁盤工具都具備磁盤資訊顯示等功能。例如在pq magic中,選擇要檢視的磁盤分區,然後單擊右鍵選擇“進階→調整簇大小”功能,即可從顯示的對話框中可以看到該磁盤目前設定的簇大小。

③手工檢視

手動建立一個100位元組以下的文本文檔。然後将該檔案複制到欲檢視簇大小的磁盤分區中,在windows下顯示該檔案的屬性,其中“所占空間”處顯示的數值就是簇大小.

參考資料:[url]http://cnbbs.us/simple/t28666.html[/url]

繼續閱讀