文本文件是一種計(jì)算機(jī)文件,它是一種典型的順序文件,其文件的邏輯結(jié)構(gòu)又屬于流式文件。特別的是,文本文件是指以ASCII碼方式(也稱文本方式)存儲的文件,更確切地說,英文、數(shù)字等字符存儲的是ASCII碼,而漢字存儲的是機(jī)內(nèi)碼。文本文件中除了存儲文件有效字符信息(包括能用ASCII碼字符表示的回車、換行等信息)外,不能存儲其他任何信息。
簡介
文本文件是一種由若干行字符構(gòu)成的計(jì)算機(jī)文件。文本文件存在于計(jì)算機(jī)文件系統(tǒng)中。通常,通過在文本文件最后一行后放置文件結(jié)束標(biāo)志來指明文件的結(jié)束。文本文件是指一種容器,而純文本是指一種內(nèi)容。文本文件可以包含純文本。一般來說,計(jì)算機(jī)文件可以分為兩類:文本文件和二進(jìn)制文件。
格式
ASCII
ASCII標(biāo)準(zhǔn)使得
只含有ASCII字符的文本文件可以在Unix、麥金塔、MicrosoftWindows、DOS和其它操作系統(tǒng)之間自由交互,而其它格式的文件是很難做到這一點(diǎn)的。但是,在這些操作系統(tǒng)中,換行符并不相同,處理非ASCII字符的方式也不一致。
MIME
文本文件在MIME標(biāo)準(zhǔn)中的類型為“文本/plain”,此外,它通常還附加編碼的信息。在Mac OS出現(xiàn)前,當(dāng)Resource fork指定某一個(gè)文件的類型為“TEXT”時(shí),Mac OS就認(rèn)為這個(gè)文件是文本文件。在Windows中,當(dāng)一個(gè)文件的擴(kuò)展名為“txt”時(shí),系統(tǒng)就認(rèn)為它是一個(gè)文本文件。此外,處于特殊的目的,有些文本文件使用其它的擴(kuò)展名。例如,計(jì)算機(jī)的源代碼也是文本文件,它們的后綴是用來指明它的程序語言的。
txt
.txt是包含極少格式信息的文字文件的擴(kuò)展名。.txt格式并沒有明確的定義,它通常是指那些能夠被系統(tǒng)終端或者簡單的文本編輯器接受的格式。任何能讀取文字的程序都能讀取帶有.txt擴(kuò)展名的文件,因此,通常認(rèn)為這種文件是通用的、跨平臺的。
在英文文本文件中,ASCII字符集是最為常見的格式,而且在許多場合,它也是默認(rèn)的格式。對于帶重音符號的和其它的非ASCII字符,必須選擇一種字符編碼。在很多系統(tǒng)中,字符編碼是由計(jì)算機(jī)的區(qū)域設(shè)置決定的。常見的字符編碼包括支持許多歐洲語言的ISO8859-1。
由于許多編碼只能表達(dá)有限的字符,通常它們只能用于表達(dá)幾種語言。Unicode制定了一種試圖能夠表達(dá)所有已知語言的標(biāo)準(zhǔn),Unicode字符集非常大,它囊括了大多數(shù)已知的字符集。Unicode有多種字符編碼,其中最常見的是UTF-8,這種編碼能夠向后兼容ASCII,相同內(nèi)容的的ASCII文本文件和UTF-8文本文件完全一致。
Windows的txt文件
微軟的MS-DOS和Windows采用了相同的文本文件格式,它們都使用CR和LF兩個(gè)字符作為換行符,這兩個(gè)字符對應(yīng)的ASCII碼分別為13和10。通常,最后一行文本并不以換行符(CR-LF標(biāo)志)結(jié)尾,包括記事本在內(nèi)的很多文本編輯器也不在文件的最后添加換行符。
大多數(shù)Windows文本文件使用ANSI、OEM或者Unicode編碼。Windows所指的ANSI編碼通常是1字節(jié)的ISO-8859編碼,不過對于像中文、日語、朝鮮文這樣的環(huán)境,需要使用2字節(jié)字符集。在過渡至Unicode前,Windows一直用ANSI作為系統(tǒng)默認(rèn)的編碼。而OEM編碼,也是通常所說的MS-DOS代碼頁,是IBM為早期IBM PC的文本模式顯示系統(tǒng)定義的。在全屏的MS-DOS程序中同時(shí)使用了圖形的和按行繪制的字符。新版本的Windows可以使用UTF-16LE和UTF-8之類的Unicode編碼。
二進(jìn)制比較
定義
計(jì)算機(jī)的存儲在物理上是二進(jìn)制的,所以文本文件與二進(jìn)制文件的區(qū)別并不是物理上的,而是邏輯上的。這兩者只是在編碼層次上有差異。
簡單來說,文本文件是基于字符編碼的文件,常見的編碼有ASCII編碼,UNICODE編碼等等。二進(jìn)制文件是基于值編碼的文件,你可以根據(jù)具體應(yīng)用,指定某個(gè)值(可以看作是自定義編碼)。
從上面可以看出文本文件基本上是定長編碼的(也有非定長的編碼如UTF-8),基于字符,每個(gè)字符在具體編碼中是固定的,ASCII碼是8個(gè)比特的編碼,UNICODE一般占16個(gè)比特。而二進(jìn)制文件可看成是變長編碼的,因?yàn)槭侵稻幋a,多少個(gè)比特代表一個(gè)值,完全由自己決定。
存取
文本工具打開一個(gè)文件,首先讀取文件物理上所對應(yīng)的二進(jìn)制比特流,然后按照所選擇的解碼方式來解釋這個(gè)流,然后將解釋結(jié)果顯示出來。一般來說,你選取的解碼方式會(huì)是ASCII碼形式(ASCII碼的一個(gè)字符是8個(gè)比特),接下來,它8個(gè)比特8個(gè)比特地來解釋這個(gè)文件流。記事本無論打開什么文件都按既定的字符編碼工作(如ASCII碼),所以當(dāng)他打開二進(jìn)制文件時(shí),出現(xiàn)亂碼也是很必然的一件事情了,解碼和譯碼不對應(yīng)。
文本文件的存儲與其讀取基本上是個(gè)逆過程。而二進(jìn)制文件的存取與文本文件的存取差不多,只是編/解碼方式不同而已。
優(yōu)缺點(diǎn)
因?yàn)槲谋疚募c二進(jìn)制文件的區(qū)別僅僅是編碼上不同,所以他們的優(yōu)缺點(diǎn)就是編碼的優(yōu)缺點(diǎn)。一般認(rèn)為,文本文件編碼基于字符定長,譯碼容易;二進(jìn)制文件編碼是變長的,所以它靈活,存儲利用率要高些,譯碼難一些(不同的二進(jìn)制文件格式,有不同的譯碼方式)。
在windows下,文本文件不一定是ASCII來存貯的,因?yàn)锳SCII碼只能表示128的標(biāo)識,打開一個(gè)txt文檔,然后另存為,有個(gè)選項(xiàng)是編碼,可以選擇存貯格式,一般來說UTF-8編碼格式兼容性要好一些。而二進(jìn)制用的計(jì)算機(jī)原始語言,不存貯兼容性。
數(shù)據(jù)存儲
由于結(jié)構(gòu)簡單,文本文件被廣泛用于記錄信息。它能夠避免其它文件格式遇到的一些問題。此外,當(dāng)文本文件中的部分信息出現(xiàn)錯(cuò)誤時(shí),往往能夠比較容易的從錯(cuò)誤中恢復(fù)出來,并繼續(xù)處理其余的內(nèi)容。文本文件的一個(gè)缺點(diǎn)是,它的熵往往較低,也就是說,可以用較小的存儲空間記錄這些信息。
參考資料 >