Java輸入輸出和網(wǎng)絡(luò)編程.ppt
《Java輸入輸出和網(wǎng)絡(luò)編程.ppt》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《Java輸入輸出和網(wǎng)絡(luò)編程.ppt(72頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第5章Java輸入輸出和網(wǎng)絡(luò)編程,【學(xué)習(xí)目標(biāo)】1.了解Java輸入/輸出流的概念,了解Java中對(duì)字節(jié)流和字符流的不同處理。,熟悉各種流類(lèi)的使用,包括如何讀寫(xiě)字節(jié)文件,如何增加緩沖和讀寫(xiě)基本數(shù)據(jù)類(lèi)型,如何通過(guò)管道讀寫(xiě)數(shù)據(jù),如何讀寫(xiě)類(lèi)對(duì)象等。,熟悉Java中文件和文件處理以及文件的隨機(jī)訪(fǎng)問(wèn)流等。掌握字符文件的讀寫(xiě)。理解緩沖和通道的概念并熟悉其使用。,2.了解Java網(wǎng)絡(luò)編程的基本概念。重點(diǎn)掌握Socket通信編程,包括服務(wù)器端Socket和客戶(hù)端Socket的建立,讀寫(xiě)Socket數(shù)據(jù)流的建立,數(shù)據(jù)的讀寫(xiě)過(guò)程和多線(xiàn)程處理等。,,5.1Java輸入/輸出流,5.1.1概述1.流的概念(Stream)Java中把這些不同來(lái)源和目標(biāo)的數(shù)據(jù)都統(tǒng)一抽象為流(Stream),它是同一臺(tái)計(jì)算機(jī)中或網(wǎng)絡(luò)上不同計(jì)算機(jī)之間有序運(yùn)動(dòng)的數(shù)據(jù)序列。,(a)(b)圖5-1輸入流和輸出流的過(guò)程圖,2.java.io包,圖5-2java.io包中字節(jié)流父類(lèi)、字符流父類(lèi)和文件處理類(lèi),①I(mǎi)nputStream類(lèi)是所有字節(jié)輸入流的父類(lèi)②Reader類(lèi)是所有字符輸入流的父類(lèi)③File類(lèi)是專(zhuān)門(mén)用來(lái)處理文件的類(lèi)。④RandomAcessFile類(lèi)實(shí)現(xiàn)了文件的隨機(jī)讀寫(xiě)。,(a)(b)圖5-3輸入流和輸出流的過(guò)程圖,3.java.nio包和java.nio.channels包,5.1.2字節(jié)文件輸入/輸出流字節(jié)文件輸入流FileInputStream是InputStream類(lèi)的子類(lèi),重寫(xiě)了父類(lèi)的read方法,用來(lái)打開(kāi)文件并以字節(jié)的方式從文件讀取數(shù)據(jù)。,1.字節(jié)文件輸入流(FileInputStream)①使用下面的構(gòu)造方法創(chuàng)建文件輸入流對(duì)象。,●publicFileInputStream(Stringname)throwsFileNotFoundException。參數(shù)是包含目錄和文件名的字符串。●publicFileInputStream(Filefile)throwsFileNotFoundException。,②使用下面的read方法從輸入流中讀取字節(jié)數(shù)據(jù),讀到流的末尾返回?1,標(biāo)志著流的結(jié)束。,●publicintread()throwsIOException?!駊ublicintread(byte[]b)throwsIOException?!駊ublicintread(byte[]b,intoff,intlen)throwsIOException。,③關(guān)閉流?!駊ublicvoidclose()throwsIOException用來(lái)關(guān)閉流。,2.字節(jié)文件輸出流(FileOutputStream)①使用下面的構(gòu)造方法創(chuàng)建文件輸出流對(duì)象。,●publicFileOutputStream(Stringname)throwsFileNotFoundException。●publicFileOutputStream(Filefile)throwsIOException?!駊ublicFileOutputStream(Stringname,booleanappend)throwsFileNotFoundException。,②使用下面的write方法向文件中寫(xiě)入數(shù)據(jù)?!駊ublicvoidwrite(intb)throwsIOException?!駊ublicvoidwrite(byte[]b)throwsIOException。●publicvoidwrite(byte[]b,intoff,intlen)throwsIOException。,③關(guān)閉流。●publicvoidclose()throwsIOException用來(lái)關(guān)閉流。,5.1.3增加緩沖和讀/寫(xiě)基本數(shù)據(jù)類(lèi)型1.緩沖字節(jié)流(BufferedInputStream和BufferedOutputStream),①使用以下構(gòu)造方法創(chuàng)建緩沖輸入流對(duì)象?!駊ublicBufferedInputStream(InputStreamin)。●publicBufferedInputStream(InputStreamin,intsize)。,②使用以下構(gòu)造方法創(chuàng)建緩沖輸出流對(duì)象?!駊ublicBufferedOutputStream(OutputStreamout)。●publicBufferedOutputStream(OutputStreamout,intsize)。,2.?dāng)?shù)據(jù)流(DataInputStream和DataOutputStream)①使用以下構(gòu)造方法創(chuàng)建數(shù)據(jù)輸入流對(duì)象和數(shù)據(jù)輸出流對(duì)象。,●publicDataInputStream(InputStreamin),創(chuàng)建數(shù)據(jù)輸入流?!駊ublicDataOutputStream(OutputStreamout),創(chuàng)建數(shù)據(jù)輸出流。,②常用方法。DataInputStream類(lèi)讀數(shù)據(jù)的方法包括readBoolean()、readChar()、readInt()、readDouble()等。,DataOutputStream類(lèi)寫(xiě)數(shù)據(jù)的方法包括writeBoolean(booleanv)、writeChar(intv)、writeInt(intv)、writeDouble(doublev)等。因見(jiàn)名知義,這里沒(méi)有列出所有方法,可查閱JavaAPI文檔。,3.打印輸出到文件,5.1.4通過(guò)管道讀/寫(xiě)數(shù)據(jù)java.io包中提供了兩個(gè)實(shí)現(xiàn)管道通信的類(lèi):管道輸出流PipedOutputStream類(lèi)和管道輸入流PipedInputStream類(lèi)。,5.1.5類(lèi)對(duì)象的讀/寫(xiě)類(lèi)ObjectOutputStream可將類(lèi)對(duì)象寫(xiě)入OutputStream,以便保存在文件中或在網(wǎng)絡(luò)上傳輸。,1.對(duì)象輸出流(ObjectOutputStream)和寫(xiě)對(duì)象①publicObjectOutputStream(OutputStreamout)throwsIOException。②publicfinalvoidwriteObject(Objectobj)throwsIOException。,2.對(duì)象輸入流(ObjectInputStream)和讀對(duì)象①publicObjectInputStream(InputStreamin)throwsIOException。,②publicfinalObjectreadObject()throwsOptionalDataException,ClassNotFoundException,IOException。,5.1.6文件類(lèi)(File)1.創(chuàng)建File對(duì)象常用File類(lèi)的以下構(gòu)造方法創(chuàng)建File對(duì)象。,①publicFile(Stringpathname),參數(shù)pathname是包含目錄和文件名的字符串。Java把目錄看作一種特殊的文件,因此該字符串可以沒(méi)有文件名。,②publicFile(Fileparent,Stringchild)。③publicFile(Stringparent,Stringchild)。,2.獲取文件信息和操作文件,5.1.7文件的隨機(jī)訪(fǎng)問(wèn)(RandomAccessFile)1.創(chuàng)建RandomAccessFile類(lèi)對(duì)象使用下面的兩個(gè)構(gòu)造方法可以創(chuàng)建RandomAccessFile類(lèi)對(duì)象。,①publicRandomAccessFile(Filefile,Stringmode)throwsIOException。②publicRandomAccessFile(Stringname,Stringmode)throwsFileNotFoundException。,2.控制讀寫(xiě)指針①publicintskipBytes(intn)throwsIOException,將文件讀寫(xiě)指針向后移動(dòng)n個(gè)字節(jié)。,②publicvoidseek(longpos)throwsIOException,把指針移到指定位置pos。③publiclonggetFilePointer()throwsIOException,得到讀寫(xiě)指針當(dāng)前的位置。,3.讀寫(xiě)數(shù)據(jù),5.1.8字符文件的讀、寫(xiě),1.讀字符文件(FileReader)2.寫(xiě)字符文件(FileWriter)3.緩沖字符輸入流(BufferedReader)4.緩沖字符輸出流(BufferedWriter),5.1.9緩沖和通道的使用1.字節(jié)緩沖區(qū)類(lèi)(ByteBuffer)①容量表示該緩沖區(qū)可以保存多少數(shù)據(jù),使用類(lèi)中的靜態(tài)方法allocate(intcapacity)可以創(chuàng)建指定容量的緩沖區(qū),其容量永遠(yuǎn)不會(huì)為負(fù)并且從不會(huì)更改。,②極限用來(lái)指明不能對(duì)超過(guò)該值的緩沖區(qū)數(shù)據(jù)項(xiàng)進(jìn)行操作,它是個(gè)非負(fù)整數(shù),不能大于緩沖區(qū)的容量值。③位置是指下一個(gè)要讀取或?qū)懭氲脑氐乃饕?。④?biāo)記與前面講過(guò)的類(lèi)似,用mark()做標(biāo)記,用reset()重新回到標(biāo)記位置。,2.文件通道(FileChannel),5.2Java網(wǎng)絡(luò)編程,5.2.1概述1.InetAddress類(lèi)Java網(wǎng)絡(luò)包中的InetAddress類(lèi)是Java中的IP地址封裝類(lèi),常用下面的方法獲取IP地址。,①publicstaticInetAddressgetByName(Stringhost)throwsUnknownHostException。②publicStringgetHostAddress()。,2.服務(wù)器和客戶(hù)機(jī)3.端口號(hào),5.2.2Socket通信1.Socket通信簡(jiǎn)介在分布處理過(guò)程中,客戶(hù)機(jī)/服務(wù)器的Socket通信,也稱(chēng)為套接字通信,是基于Socket連接的網(wǎng)絡(luò)通信模式。,圖5-5基于連接的網(wǎng)絡(luò)通信模式,2.Socket類(lèi)①使用以下構(gòu)造方法創(chuàng)建連接到指定服務(wù)器的客戶(hù)端套接字(Socket類(lèi))對(duì)象。,●publicSocket(Stringhost,intport)throwsunknownHostException,IOException?!駊ublicSocket(InetAddresshost,intport)throwsIOException。,②使用Socket類(lèi)的以下方法從套接字中讀取數(shù)據(jù)和向套接字中寫(xiě)入數(shù)據(jù)。●publicInputStreamgetInputStream()throwsIOException?!駊ublicOutputStreamgetOutputStream()throwsIOException。,3.ServerSocket類(lèi)①使用以下構(gòu)造方法創(chuàng)建.ServerSocket類(lèi)對(duì)象。,●publicServerSocket(intport)throwsIOException。●publicServerSocket(intport,intbacklog)throwsIOException。,②使用ServerSocket類(lèi)的方法accept()打開(kāi)Socket,然后可以從套接字中讀取數(shù)據(jù)或向套接字中寫(xiě)入數(shù)據(jù)。,5.2.3UDP數(shù)據(jù)報(bào)通信1.UDP數(shù)據(jù)報(bào)通信簡(jiǎn)介2.DatagramSocket類(lèi)①使用以下構(gòu)造方法創(chuàng)建收、發(fā)數(shù)據(jù)報(bào)的Socket對(duì)象。,●publicDatagramSocket()throwsSocketException,自動(dòng)指定一個(gè)可用的端口號(hào)?!駊ublicDatagramSocket(intport)throwsSocketException,參數(shù)port指定端口號(hào)。,②發(fā)送數(shù)據(jù)報(bào)和接收數(shù)據(jù)報(bào)?!駊ublicvoidsend(DatagramPacketp)throwsIOException,發(fā)送數(shù)據(jù)報(bào)。●publicvoidreceive(DatagramPacketp)throwsIOException,接收數(shù)據(jù)報(bào)。,3.DatagramPacket類(lèi)①使用下面的構(gòu)造方法創(chuàng)建DatagramPacket類(lèi)對(duì)象作為數(shù)據(jù)的載體。,●publicDatagramPacket(byte[]buf,intlength)●publicDatagramPacket(byte[]buf,intlength,InetAddressaddress,intport),②下面是DatagramPacket類(lèi)的常用方法。●publicInetAddressgetAddress(),得到存放在數(shù)據(jù)報(bào)中的IP地址。,●publicintgetPort(),得到存放在數(shù)據(jù)報(bào)中的端口號(hào)?!駊ublicbyte[]getData(),得到存放在數(shù)據(jù)報(bào)中的數(shù)據(jù)。,●publicintgetLength(),得到數(shù)據(jù)報(bào)中的數(shù)據(jù)長(zhǎng)度?!駊ublicvoidsetData(byte[]buf),設(shè)置數(shù)據(jù)報(bào)中的數(shù)據(jù)內(nèi)容。,5.2.4使用Socket通信實(shí)現(xiàn)簡(jiǎn)單聊天室1.聊天室圖形界面類(lèi)(ChatPanel),圖5-6例5.13程序ChatPanel的運(yùn)行效果,2.聊天室服務(wù)器端(ChatServer類(lèi))3.聊天室客戶(hù)端(ChatClient類(lèi)),- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- Java 輸入輸出 網(wǎng)絡(luò) 編程
鏈接地址:http://ioszen.com/p-11496821.html