資源描述:
《第8章Java 輸入輸出系統(tǒng)ppt課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第8章Java輸入輸出系統(tǒng)8.1字節(jié)流8.2過濾流8.3字符流8.6對(duì)象序列化8.7File類8.8綜合實(shí)例8.4標(biāo)準(zhǔn)I/O8.5隨機(jī)訪問文件類8.1字節(jié)流在java.io包中,java.io.InputStream表示字節(jié)輸入流,它是抽象類,不能實(shí)例化。InputStream類的作用是用來表示那些從不同數(shù)據(jù)源產(chǎn)生輸入的類。這些數(shù)據(jù)源有:字節(jié)數(shù)組、String對(duì)象、文件、管道及其他數(shù)據(jù)源。每一種數(shù)據(jù)源都有相應(yīng)的InputStream子類。輸入流的類層次結(jié)構(gòu)如圖8.1所示。圖8.1輸入流的類層次結(jié)構(gòu)8.1字節(jié)流InputStream中的讀取數(shù)據(jù)的方法如下:abstr
2、actintread()throwsIOException功能:讀取一個(gè)字節(jié)數(shù)據(jù),并返回讀到的數(shù)據(jù),如果返回-1,表示讀到了輸入流的末尾。intread(byte[]b)throwsIOException功能:從輸入流中讀取一定數(shù)量的字節(jié),并將其存儲(chǔ)在緩沖區(qū)數(shù)組b中,并以整數(shù)形式返回實(shí)際讀取的字節(jié)數(shù),如果返回-1,表示讀到了輸入流的末尾。intread(byte[]?b,intoff,intlen)throwsIOException:功能:將數(shù)據(jù)讀入一個(gè)字節(jié)數(shù)組,同時(shí)返回實(shí)際讀取字節(jié)數(shù),如果返回-1,表示讀到了輸入流的末尾。off指定在數(shù)組b中存放數(shù)據(jù)的起始偏移位
3、置,len指定讀取的最大字節(jié)數(shù)。如果返回-1,表示讀到了輸入流的末尾。longskip(longn)throwsIOException:功能:跳過和放棄此輸入流中的n個(gè)字節(jié),返回跳過的實(shí)際字節(jié)數(shù)。如果n為負(fù),則不跳過任何字節(jié)。默認(rèn)實(shí)現(xiàn)是此類的skip方法創(chuàng)建一個(gè)byte數(shù)組,然后重復(fù)將字節(jié)讀入其中,直到讀夠n個(gè)字節(jié)或已到達(dá)流末尾為止。8.1字節(jié)流intavailable()throwsIOException:功能:返回此輸入流下一個(gè)方法調(diào)用可以不受阻塞地從此輸入流讀取(或跳過)的估計(jì)字節(jié)數(shù)。voidclose():功能:關(guān)閉輸入流,釋放和這個(gè)流相關(guān)的系統(tǒng)資源。ja
4、va.io.OutputStream表示字節(jié)輸出流,它也是抽象類,不能被實(shí)例化。字節(jié)輸出流的種類和字節(jié)輸入流是大致對(duì)應(yīng)的。輸出流的類層次結(jié)構(gòu)如圖8.2所示。圖8.2輸出流的類層次結(jié)構(gòu)8.1字節(jié)流OutputStream中的寫入數(shù)據(jù)的方法如下:abstractvoidwrite(intb)throwsIOException:將b的最低的一個(gè)字節(jié)寫入此輸出流,b的高位字節(jié)(3個(gè))丟棄。voidwrite(byte[]b)throwsIOException:將b.length個(gè)字節(jié)從指定的byte數(shù)組寫入此輸出流。voidwrite(byte[]b,intoff,int
5、len)throwsIOException:將指定byte數(shù)組中從偏移量off開始的len個(gè)字節(jié)寫入此輸出流。voidflush()throwsIOException:刷新此輸出流并強(qiáng)制寫出所有緩沖的輸出字節(jié)。voidclose()throwsIOException:關(guān)閉此輸出流并釋放與此流有關(guān)的所有系統(tǒng)資源。8.1.1字節(jié)數(shù)組輸入流ByteArrayInputStream類從內(nèi)存中的字節(jié)數(shù)組中讀取數(shù)據(jù),因此它的數(shù)據(jù)源是一個(gè)字節(jié)數(shù)組。ByteArrayInputStream類本身采用了適配器設(shè)計(jì)模式,它把字節(jié)數(shù)組轉(zhuǎn)換為輸入流類型,使得程序能夠?qū)ψ止?jié)數(shù)組進(jìn)行讀操作。
6、【例8.1】使用字節(jié)數(shù)組輸入流讀取數(shù)組中的字節(jié)。8.1.2字節(jié)數(shù)組輸出流ByteArrayOutputStream類的構(gòu)造方法如下:ByteArrayOutputStream():創(chuàng)建一個(gè)新的字節(jié)數(shù)組輸出流。緩沖區(qū)的容量最初是32字節(jié),如有必要可增加其大小。ByteArrayOutputStream(intsize):創(chuàng)建一個(gè)新的byte數(shù)組輸出流,它具有指定大小的緩沖區(qū)容量(以字節(jié)為單位)。8.1.2字節(jié)數(shù)組輸出流【例8.2】把字符串轉(zhuǎn)換為字節(jié)數(shù)組再寫入到字節(jié)數(shù)據(jù)輸出流中。ByteArrayOutputStreamDemo.javapackageorg.iost
7、ream;importjava.io.*;classByteArrayOutputStreamDemo{publicstaticvoidmain(Stringargs[])throwsIOException{ByteArrayOutputStreambaos=newByteArrayOutputStream();Strings="welcometouseByteArrayOutputStream.";bytebuf[]=s.getBytes();baos.write(buf);//將指定byte數(shù)組中的字節(jié)寫入此byte數(shù)組輸出流System.out.printl
8、n(bao