文本文件和二進(jìn)制文件
兩者并無本質(zhì)區(qū)別剂桥,或者說文本文件就是特殊的二進(jìn)制文件。最主要的區(qū)別就是打開文件的程序?qū)?nèi)容的解釋上属提。
計(jì)算機(jī)在物理內(nèi)存上存儲(chǔ)的都是二進(jìn)制文件权逗,所以二進(jìn)制文件和文本文件的區(qū)別是在邏輯上的而不是物理層面上的。文本文件是基于字符編碼(ascii冤议、unicode等)的文件斟薇,二進(jìn)制文件是基于值編碼的文件。
二進(jìn)制文件就是把它在內(nèi)存中的儲(chǔ)存形式原樣的輸出到磁盤中存放恕酸,即存放的是數(shù)據(jù)的原形式堪滨。
文本文件是把數(shù)據(jù)的終端形式的二進(jìn)制數(shù)據(jù)輸出到磁盤上存放,即存放的是數(shù)據(jù)的終端形式
這是個(gè)很好的問題蕊温,要弄明白二者的區(qū)別袱箱,需要知道文件的讀寫過程。
以讀文件為例义矛,實(shí)際上是磁盤 》》 文件緩沖區(qū)》》應(yīng)用程序內(nèi)存空間 這兩個(gè)轉(zhuǎn)化過程犯眠。我們說“文本文件和二進(jìn)制文件沒有區(qū)別”,實(shí)際上針對(duì)的是第一個(gè)過程症革;既然沒有區(qū)別筐咧,那么打開方式不同,為何顯示內(nèi)容就不同呢?這個(gè)區(qū)別實(shí)際上是第二個(gè)過程造成的量蕊。
文件實(shí)際上包括兩部分铺罢,控制信息和內(nèi)容信息。純文本文件僅僅是沒有控制格式信息罷了残炮;實(shí)際上也是一種特殊的二進(jìn)制文件韭赘。所以,我們很難區(qū)分二者的不同势就,因?yàn)樗麄兊母拍钌喜皇峭耆コ獾摹?/strong>
我們說文本文件是特殊的二進(jìn)制文件泉瞻,是因?yàn)槲谋疚募?shí)際上的解釋格式已經(jīng)確定了:ASCII或者unicode編碼。文本文件的一個(gè)缺點(diǎn)是苞冯,它的熵往往較低袖牙,也就是說,其實(shí)本可以用更小的存儲(chǔ)空間記錄這些信息舅锄。比如鞭达,文本文件中的一個(gè)數(shù)字65536,需要用5個(gè)字節(jié)來存儲(chǔ)皇忿;但是用二進(jìn)制格式畴蹭,采用int存儲(chǔ),僅僅需要2個(gè)字節(jié)鳍烁。而二進(jìn)制文件elf和bmp等叨襟,都往往有一個(gè)head,告訴你文件信息和解釋方式幔荒。
至于“文本文件可以按行操作糊闽,即一行一行的操作,而二進(jìn)制就只能按字節(jié)塊了”铺峭,這個(gè)說法則是完全錯(cuò)誤的墓怀。