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