版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第12章文件和流輸入和輸出是一個(gè)程序必備的功能,Java的應(yīng)用程序和JavaApplet往往經(jīng)常要通過輸入和輸出來讀寫數(shù)據(jù)。本章將介紹如何從一個(gè)能發(fā)送字節(jié)或字符序列的“數(shù)據(jù)源”獲得輸入,以及如何將輸出發(fā)送給能夠接收字節(jié)序列的一個(gè)“目標(biāo)”。字節(jié)序列的數(shù)據(jù)源及目標(biāo)可以是文件,也可以是一個(gè)網(wǎng)絡(luò)連接,甚至是一個(gè)內(nèi)存塊。在本章中,將重點(diǎn)討論用來操控文件的方法,以及用來將數(shù)據(jù)(可以是對(duì)象)實(shí)際寫入文件、將信息從文件中讀回的方法,或者是更新文件的方法
2、。12.1Java流類庫簡介流類庫簡介Java語言的輸入輸出功能是十分強(qiáng)大而靈活的,它往往需要包裝許多不同的對(duì)象。在Java類庫中,IO部分的內(nèi)容是很龐大的,因?yàn)樗婕暗念I(lǐng)域很廣泛:標(biāo)準(zhǔn)輸入輸出,文件的操作,網(wǎng)絡(luò)上的數(shù)據(jù)流,字符串流,對(duì)象流,zip文件流……本章的目的是做一個(gè)簡要的介紹。12.1.1流的概念Java所有的IO機(jī)制都是基于數(shù)據(jù)流的,這些數(shù)據(jù)流表示了字符或者字節(jié)數(shù)據(jù)的流動(dòng)序列。Java的IO流提供了讀寫數(shù)據(jù)的標(biāo)準(zhǔn)方法。任何J
3、ava中表示數(shù)據(jù)源的對(duì)象都會(huì)提供以數(shù)據(jù)流的方式讀寫它的數(shù)據(jù)的方法。流是一個(gè)很形象的概念,當(dāng)程序需要讀取數(shù)據(jù)時(shí),就會(huì)開啟一個(gè)通向數(shù)據(jù)源的流,這個(gè)數(shù)據(jù)源可以是文件,內(nèi)存,或是網(wǎng)絡(luò)連接,則這就是“輸入流”,如圖121所示。類似的,當(dāng)程序需要寫入數(shù)據(jù)的時(shí)候,就會(huì)開啟一個(gè)通向目的地的流,這就是“輸出流”,這時(shí)你就可以想像數(shù)據(jù)好像在這其中“流”動(dòng)一樣,如圖122所示。圖121輸入流示意圖圖122輸出流示意圖第第第12章文件和流表121是字節(jié)流的幾個(gè)
4、常用子類及功能。表121字節(jié)流常用子類及功能字節(jié)流類功能簡單介紹DataInputStream包含了讀取Java標(biāo)準(zhǔn)數(shù)據(jù)類型的輸入流DataOutputStream包含了寫Java標(biāo)準(zhǔn)數(shù)據(jù)類型的輸出流ByteArrayInputStream從字節(jié)數(shù)組讀取的輸入流ByteArrayOutputStream寫入字節(jié)數(shù)組的輸出流FileInputStream從文件讀入的輸入流FileOutputStream寫入文件的輸出流PrintStrea
5、m包含最常見的Print()和Println()的輸出流PushbackInputStream返回一個(gè)字節(jié)到輸入流,主要用于編譯器的實(shí)現(xiàn)PipedInputStream輸入管道PipedOutputStream輸出管道SequenceInputStream將n個(gè)輸入流聯(lián)合起來,一個(gè)接一個(gè)按一定順序讀取BufferInputStream緩沖輸入流BufferOutputStream緩沖輸出流FilterInputStream實(shí)現(xiàn)了Inpu
6、tStream接口的過濾器輸入流FilterOutputStream實(shí)現(xiàn)了OutputStream接口的過濾器輸出流字節(jié)流抽象類InputStream和OutputStream的常用方法如下。(1)InputStream1)abstractintread():讀取一個(gè)字節(jié)的數(shù)據(jù),并返回讀到的字節(jié)。read方法若遇到數(shù)據(jù)流的末尾,便會(huì)返回一個(gè)–1值。2)intread(byte[]b):將數(shù)據(jù)讀入一個(gè)字節(jié)數(shù)組,同時(shí)返回讀回的字節(jié)數(shù)。和前面
7、一樣,如果遇到數(shù)據(jù)流的末尾,read方法會(huì)返回一個(gè)–1值。讀入的最大字節(jié)數(shù)由b.length界定。3)intread(byte[]bintoffintlen):將數(shù)據(jù)讀入一個(gè)字節(jié)數(shù)組。read會(huì)返回讀回的實(shí)際字節(jié)數(shù),或在流的結(jié)尾處返回一個(gè)–1值。其中:b:指定要把字節(jié)讀入哪個(gè)數(shù)組;off:指定數(shù)組的偏移位置,第一個(gè)字節(jié)應(yīng)放在哪個(gè)位置;len:讀回的最大字節(jié)數(shù)。4)longskip(longn):在輸入流中跳過幾個(gè)字節(jié),它返回的實(shí)際跳過的
8、字節(jié)數(shù)(如果遇到流的末尾,這個(gè)數(shù)字則可能小于n)。5)intavailable():返回在不加阻止的情況下,可用的字節(jié)數(shù)(“阻止”是指當(dāng)前線程必須暫停,等待下一次被喚醒)。6)voidclose():關(guān)閉輸入流。(2)OutputStream1)abstractvoidwrite(intb):寫入一個(gè)字節(jié)的數(shù)據(jù)。2)voidwrite(byte[]b):寫入數(shù)組b內(nèi)的所有字節(jié)。3)voidwrite(byte[]bintoffintle
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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)論