《Java程序設(shè)計(jì)及應(yīng)用》課件07-2_第1頁(yè)
《Java程序設(shè)計(jì)及應(yīng)用》課件07-2_第2頁(yè)
《Java程序設(shè)計(jì)及應(yīng)用》課件07-2_第3頁(yè)
《Java程序設(shè)計(jì)及應(yīng)用》課件07-2_第4頁(yè)
《Java程序設(shè)計(jì)及應(yīng)用》課件07-2_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

內(nèi)容提要流模型字節(jié)流低級(jí)流高級(jí)流字符流低級(jí)流高級(jí)流NIO簡(jiǎn)介流模型Java中數(shù)據(jù)流這個(gè)模型類似于管道中的水流:低級(jí)流高級(jí)流高級(jí)流數(shù)據(jù)外部

設(shè)備程序

代碼

圖7.1數(shù)據(jù)流Java數(shù)據(jù)流編程的框架是:(1)建立流(對(duì)應(yīng)鋪設(shè)管道);(2)通過流讀/寫數(shù)據(jù)(對(duì)應(yīng)從管道中取水/向管道中注水);(3)關(guān)閉流(對(duì)應(yīng)拆除管道)。低級(jí)字節(jié)流低級(jí)流都與外部設(shè)備(如磁盤文件)相連,就像深井中的水龍帶一樣,里面的數(shù)據(jù)流量不可能太大,Java設(shè)計(jì)低級(jí)流的流量為每讀/寫一次一個(gè)字節(jié)(byte),即低級(jí)流是以字節(jié)為單位來(lái)傳輸?shù)?。最常用的低?jí)字節(jié)流莫過于:FileInputStreamFileOutputStream把這兩個(gè)類研究透了,其他的低級(jí)流都是類似的,讀者查閱相應(yīng)的JDKAPI即可。FileInputStream構(gòu)造方法有:FileInputStream(Filefile)throwsFileNotFoundException

FileInputStream(Stringname)throwsFileNotFoundException讀取數(shù)據(jù)用到read()方法:intread()throwsIOException

intread(byte[]b)throwsIOException

intread(byte[]b,intoff,intlen)throwsIOException例程FileOutputStreamFileOutputStream與FileInputStream是一對(duì),前者是輸出流,而后者是輸入流,其道理是一樣的,下面列出其構(gòu)造:FileOutputStream(Filefile)

FileOutputStream(Filefile,booleanappend)

FileOutputStream(Stringname)

FileOutputStream(Stringname,booleanappend)下面列出其操作方法:voidwrite(byte[]b)

voidwrite(byte[]b,intoff,intlen)

voidwrite(intb)常用的其他低級(jí)流InputStreamOutputStreamByteArrayInputStreamByteArrayOutputStreamPipedInputStreamPipedOutputStream高級(jí)字節(jié)流若與外部設(shè)備以字節(jié)為單位進(jìn)行數(shù)據(jù)交換,使用低級(jí)流就足夠了,但很多時(shí)候交換的數(shù)據(jù)單位不能是字節(jié),例如int、double、String等類型的數(shù)據(jù)以及漢字等,這時(shí)就需要高級(jí)流了。高級(jí)流不直接與外部設(shè)備連接,而是與低級(jí)流或其他高級(jí)流銜接,用于對(duì)流經(jīng)的數(shù)據(jù)進(jìn)行特別處理(如過濾、整理等)。典型的高級(jí)流主要有DataOutputStream和DataInputStream。DataOutputStream構(gòu)造方法:DataOutputStream(OutputStreamout)功能方法voidwrite(intb)

voidwrite(byte[]b,intoff,intlen)

voidwriteBoolean(booleanv)

voidwriteByte(intv)

voidwriteChar(intv)

voidwriteShort(intv)

voidwriteInt(intv)

voidwriteLong(longv)

voidwriteFloat(floatv)

voidwriteDouble(doublev)

voidwriteUTF(Stringstr)例程DataInputStreamDataInputStream類似DataOutputStream,讀者可查閱JDKAPI,不再贅述。例程其他常用字節(jié)高級(jí)流高級(jí)流通常都繼承自類FilterOutputStream,常用的高級(jí)流還有:BufferedInputStreamBufferedOutputStreamPrintStreamPushbackInputStream字符流字符流是以Reader、Writer為根類的兩個(gè)獨(dú)立的類繼承體系,類似字節(jié)流,區(qū)別在于字符流用于處理字符(即文本,注意Java字符采用Unicode雙字節(jié)表示),涉及在JVM內(nèi)部(采用UTF-16編碼)和外部(采用操作系統(tǒng)默認(rèn)的字符集編碼)進(jìn)行字符編碼的轉(zhuǎn)換。而字節(jié)流用于處理字節(jié),不涉及字符編碼。字符流也有低級(jí)和高級(jí)之別,低級(jí)字符流與外部設(shè)備直接連接,高級(jí)字符流不能與外部設(shè)備直接連接,而是與低級(jí)字符流或其他高級(jí)字符流連接。低級(jí)的字符流中比較典型的要數(shù)FileWriter和FileReader了。關(guān)于這兩個(gè)類讀者可查閱JDKAPI,這里僅給出一個(gè)例子,演示其應(yīng)用:例程1例程2其他常用的字符流其他常用的低級(jí)字符流有:CharArrayWriter/CharArrayReader

PiperWriter/PiperReader

StringWriter/StringReader常用的高級(jí)字符流有:BufferedWriter/BufferedReader

LineNumberReader

PrintWriter

PushbackReader

OutputStreamWriter/InputStreamReader對(duì)象流與序列化字節(jié)流和字符流能夠讀寫的數(shù)據(jù)類型是Java基本類型和字符串,但對(duì)于讀寫一般的Java對(duì)象就無(wú)能為力了。把一個(gè)Java對(duì)象寫入到一個(gè)流中稱為對(duì)象的序列化(serialization),這需要ObjectOutputStream,從一個(gè)流中讀取數(shù)據(jù)并恢復(fù)成一個(gè)Java對(duì)象,這稱為對(duì)象的反序列化(unserialization),這需要ObjectInputStream。Java對(duì)象要能夠被序列化,必須實(shí)現(xiàn)接口Serializable。例程N(yùn)IO包簡(jiǎn)介為什么要引入NIO包流與塊的比較小結(jié)流模型字節(jié)流低級(jí)流高級(jí)流字符流低級(jí)流高級(jí)流NIO簡(jiǎn)介

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論