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