二進(jìn)制文件和文本文件到底有什么區(qū)別(權(quán)威)
從文件編碼的方式來看,文件可分為ASCII碼文件和二進(jìn)制碼文件兩種。
16樓 liujingfu123 (Oh_My_GoD) 回復(fù)于 2004-12-17 08:49:17 得分 10
我也說兩句吧:(摘抄自C語言之家) 什么是流(stream)? 流是程序輸入或輸出的一個(gè)連續(xù)的字節(jié)序列,設(shè)備(例如鼠標(biāo)、鍵盤、磁盤、屏幕、調(diào)制解調(diào)器和打印機(jī))的輸入和輸出都是用流來處理的。在C語言中,所有的流均以文件的形式出現(xiàn)----不一定是物理磁盤文件,還可以是對應(yīng)于某個(gè)輸入/輸出源的邏輯文件。C語言提供了5種標(biāo)準(zhǔn)的流,你的程序在任何時(shí)候都可以使用它們,并且不必打開或關(guān)閉它們。以下列出了這5種標(biāo)準(zhǔn)的流。 ------------------------------------------------ 名稱 描 述 例 子 ------------------------------------------------ stdin 標(biāo)準(zhǔn)輸入 鍵盤 stdout 標(biāo)準(zhǔn)輸出 屏幕 stderr 標(biāo)準(zhǔn)錯(cuò)誤 屏幕 stdprn 標(biāo)準(zhǔn)打印機(jī) LPT1端口 stdaux 標(biāo)準(zhǔn)串行設(shè)備 COM1端口 ------------------------------------------------ 需要注意的是,stdprn和stdaux并不總是預(yù)先定義好的,因?yàn)長PT1和COM1端口在某些操作系統(tǒng)中是沒有意義的,而stdin,stdout和stderr總是預(yù)先定義好的。此外,stdin并不一定來自鍵盤,stdout也并不一定顯示在屏幕上,它們都可以重定向到磁盤文件或其它設(shè)備上。 文本模式(textmode)和二進(jìn)制模式(binarymode)有什么區(qū)別? 流可以分為兩種類型:文本流和二進(jìn)制流。文本流是解釋性的,最長可達(dá)255個(gè)字符,其中回車/換行將被轉(zhuǎn)換為換行符“\n”,(如果以"文本"方式打開一個(gè)文件,那么在讀字符的時(shí)候,系統(tǒng)會(huì)把所有的"\r\n"序列轉(zhuǎn)成"\n",在寫入時(shí)把"\n"轉(zhuǎn)成"\r\n" archim ‘s opinion )。二進(jìn)制流是非解釋性的,一次處理一個(gè)字符,并且不轉(zhuǎn)換字符。 通常,文本流用來讀寫標(biāo)準(zhǔn)的文本文件,或者將字符輸出到屏幕或打印機(jī),或者接受鍵盤的輸入;而二進(jìn)制流用來讀寫二進(jìn)制文件(例如圖形或字處理文檔),或者讀取鼠標(biāo)輸入,或者讀寫調(diào)制解調(diào)器。 4樓 yhz (耗子) 回復(fù)于 2004-10-20 20:24:24 得分 10
如果用文本方式打開文件,會(huì)把“0D 0A”自動(dòng)變換成“\n”來存在內(nèi)存中。寫入的時(shí)候反向處理。 而二進(jìn)制方式打開的話,就不會(huì)有這個(gè)過程。 但是,Unicode/UTF/UCS格式的文件,必須用二進(jìn)制方式打開和讀寫。 |
|