從文件編碼的方式來看,文件可分為ASCII碼文件和二進制碼文件兩種。
ASCII文件也稱為文本文件,這種文件在磁盤中存放時每個字符對應一個字節(jié),用于存放對應的ASCII碼。例如,數(shù)5678的存儲形式為:
ASC碼: 00110101 00110110 00110111 00111000
↓ ↓ ↓ ↓
十進制碼: 5 6 7 8 共占用4個字節(jié)。ASCII碼文件可在屏幕上按字符顯示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可顯示文件的內容。 由于是按字符顯示,因此能讀懂文件內容。
二進制文件是按二進制的編碼方式來存放文件的。 例如, 數(shù)5678的存儲形式為: 00010110 00101110只占二個字節(jié)。二進制文件雖然也可在屏幕上顯示, 但其內容無法讀懂。C系統(tǒng)在處理這些文件時,并不區(qū)分類型,都看成是字符流,按字節(jié)進行處理。 輸入輸出字符流的開始和結束只由程序控制而不受物理符號(如回車符)的控制。 因此也把這種文件稱作“流式文件”。
16樓 liujingfu123 (Oh_My_GoD) 回復于 2004-12-17 08:49:17 得分 10
我也說兩句吧:(摘抄自C語言之家)
什么是流(stream)?
流是程序輸入或輸出的一個連續(xù)的字節(jié)序列,設備(例如鼠標、鍵盤、磁盤、屏幕、調制解調器和打印機)的輸入和輸出都是用流來處理的。在C語言中,所有的流均以文件的形式出現(xiàn)----不一定是物理磁盤文件,還可以是對應于某個輸入/輸出源的邏輯文件。C語言提供了5種標準的流,你的程序在任何時候都可以使用它們,并且不必打開或關閉它們。以下列出了這5種標準的流。
------------------------------------------------
名稱 描 述 例 子
------------------------------------------------
stdin 標準輸入 鍵盤
stdout 標準輸出 屏幕
stderr 標準錯誤 屏幕
stdprn 標準打印機 LPT1端口
stdaux 標準串行設備 COM1端口
------------------------------------------------
需要注意的是,stdprn和stdaux并不總是預先定義好的,因為LPT1和COM1端口在某些操作系統(tǒng)中是沒有意義的,而stdin,stdout和stderr總是預先定義好的。此外,stdin并不一定來自鍵盤,stdout也并不一定顯示在屏幕上,它們都可以重定向到磁盤文件或其它設備上。
文本模式(textmode)和二進制模式(binarymode)有什么區(qū)別?
流可以分為兩種類型:文本流和二進制流。文本流是解釋性的,最長可達255個字符,其中回車/換行將被轉換為換行符“\n”,(如果以"文本"方式打開一個文件,那么在讀字符的時候,系統(tǒng)會把所有的"\r\n"序列轉成"\n",在寫入時把"\n"轉成"\r\n" archim ‘s opinion )。二進制流是非解釋性的,一次處理一個字符,并且不轉換字符。
通常,文本流用來讀寫標準的文本文件,或者將字符輸出到屏幕或打印機,或者接受鍵盤的輸入;而二進制流用來讀寫二進制文件(例如圖形或字處理文檔),或者讀取鼠標輸入,或者讀寫調制解調器。
4樓 yhz (耗子) 回復于 2004-10-20 20:24:24 得分 10
如果用文本方式打開文件,會把“0D 0A”自動變換成“\n”來存在內存中。寫入的時候反向處理。
而二進制方式打開的話,就不會有這個過程。
但是,Unicode/UTF/UCS格式的文件,必須用二進制方式打開和讀寫。