文本文件
由若干行字元構成的計算機文件
文本文件是一種計算機文件,它是一種典型的順序文件,其文件的邏輯結構又屬於流式文件。特別的是,文本文件是指以ASCII碼方式(也稱文本方式)存儲的文件,更確切地說,英文、數字等字元存儲的是ASCII碼,而漢字存儲的是機內碼。文本文件中除了存儲文件有效字元信息(包括能用ASCII碼字元表示的回車、換行等信息)外,不能存儲其他任何信息。
文本文件是一種由若干行字元構成的計算機文件。文本文件存在於計算機文件系統中。通常,通過在文本文件最後一行後放置文件結束標誌來指明文件的結束。文本文件是指一種容器,而純文本是指一種內容。文本文件可以包含純文本。一般來說,計算機文件可以分為兩類:文本文件和二進位文件。
文件
只含有ASCII字元的文本文件可以在Unix、Macintosh、MicrosoftWindows、DOS和其它操作系統之間自由交互,而其它格式的文件是很難做到這一點的。但是,在這些操作系統中,換行符並不相同,處理非ASCII字元的方式也不一致。
文本文件在MIME標準中的類型為“text/plain”,此外,它通常還附加編碼的信息。在MacOSX出現前,當Resourcefork指定某一個文件的類型為“TEXT”時,MacOS就認為這個文件是文本文件。在Windows中,當一個文件的擴展名為“txt”時,系統就認為它是一個文本文件。此外,處於特殊的目的,有些文本文件使用其它的擴展名。例如,計算機的源代碼也是文本文件,它們的後綴是用來指明它的程序語言的。
.txt是包含極少格式信息的文字文件的擴展名。.txt格式並沒有明確的定義,它通常是指那些能夠被系統終端或者簡單的文本編輯器接受的格式。任何能讀取文字的程序都能讀取帶有.txt擴展名的文件,因此,通常認為這種文件是通用的、跨平台的。
在英文文本文件中,ASCII字符集是最為常見的格式,而且在許多場合,它也是默認的格式。對於帶重音符號的和其它的非ASCII字元,必須選擇一種字元編碼。在很多系統中,字元編碼是由計算機的區域設置決定的。常見的字元編碼包括支持許多歐洲語言的ISO8859-1。
由於許多編碼只能表達有限的字元,通常它們只能用於表達幾種語言。Unicode制定了一種試圖能夠表達所有已知語言的標準,Unicode字符集非常大,它囊括了大多數已知的字符集。Unicode有多種字元編碼,其中最常見的是UTF-8,這種編碼能夠向後兼容ASCII,相同內容的的ASCII文本文件和UTF-8文本文件完全一致。
微軟的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個人電腦的文本模式顯示系統定義的。在全屏的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編碼格式兼容性要好一些。而二進位用的計算機原始語言,不存貯兼容性。
由於結構簡單,文本文件被廣泛用於記錄信息。它能夠避免其它文件格式遇到的一些問題。此外,當文本文件中的部分信息出現錯誤時,往往能夠比較容易的從錯誤中恢復出來,並繼續處理其餘的內容。文本文件的一個缺點是,它的熵往往較低,也就是說,可以用較小的存儲空間記錄這些信息。