九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類(lèi) > PPT文檔下載  

java08(第8章輸入輸出流).ppt

  • 資源ID:11496727       資源大小:240KB        全文頁(yè)數(shù):55頁(yè)
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機(jī):
溫馨提示:
用戶(hù)名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢(xún)和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類(lèi)文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

java08(第8章輸入輸出流).ppt

Java語(yǔ)言程序設(shè)計(jì),清華大學(xué)出版社,第8章輸入輸出流,第8章主要內(nèi)容,1、輸入輸出流2、文件處理3、隨機(jī)存取文件和本地可執(zhí)行文件4、數(shù)據(jù)流與對(duì)象流5、Java多媒體技術(shù),8.1輸入輸出流,8.1.1流的概念流是一個(gè)比文件所包含范圍更廣的概念。流是一個(gè)可被順序訪問(wèn)的數(shù)據(jù)序列,它是對(duì)計(jì)算機(jī)輸入數(shù)據(jù)和輸出數(shù)據(jù)的抽象。,圖8.1“流”是數(shù)據(jù)從一種設(shè)備流向另一種設(shè)備的過(guò)程,8.1.2io類(lèi)庫(kù),流序列中的數(shù)據(jù)既可以是未經(jīng)加工的原始二進(jìn)制數(shù)據(jù),也可以是經(jīng)一定編碼處理后符合某種格式規(guī)定的特定數(shù)據(jù)。所以Java中的數(shù)據(jù)流有字節(jié)流和字符流之分。,在java.io包中有四個(gè)基本類(lèi):InputStream、OutputStream及Reader、Writer類(lèi),它們分別處理字節(jié)流和字符流。如圖8.2所示。,圖8.2流的分類(lèi),1、字節(jié)流,在io類(lèi)庫(kù)中,InputStream和OutputStream是處理字節(jié)數(shù)據(jù)的基本輸入輸出類(lèi),它們處于java.io包最頂層。這兩個(gè)類(lèi)均為抽象類(lèi),也就是說(shuō)它們不能被實(shí)例化,必須生成子類(lèi)之后才能實(shí)現(xiàn)一定的功能。,在java.io包中定義了很多這二個(gè)基本類(lèi)具體實(shí)現(xiàn)輸入輸出功能的子類(lèi),表8.1為部分常用字節(jié)輸入流類(lèi)和字節(jié)輸出流子類(lèi)的功能。,表8.1部分常用字節(jié)輸入流類(lèi)和輸出流類(lèi)的功能,2、字符流,處理字符數(shù)據(jù)的基本輸入輸出的類(lèi)是Reader和Writer,它們也處于java.io包最頂層,且這兩個(gè)類(lèi)均為抽象類(lèi),Java.io包中其它處理字符流的類(lèi)都是從這兩個(gè)類(lèi)繼承而來(lái)的。,由于Reader和Writer是抽象類(lèi),因此,在java.io包中定義了許多這二個(gè)處理字符流基本類(lèi)具體實(shí)現(xiàn)輸入輸出功能的子類(lèi),表8.2為部分常用字符輸入流類(lèi)和字符輸出流子類(lèi)的功能。,表8.2部分常用字符輸入流類(lèi)和輸出流類(lèi)的功能,8.2文件處理,8.2.1文件與目錄管理,在Java語(yǔ)言的java.io包中,由File類(lèi)提供了描述文件和目錄的操作與管理方法。但File類(lèi)不是InputStream、OutputStream或Reader、Writer的子類(lèi),因?yàn)樗回?fù)責(zé)數(shù)據(jù)的輸入輸出,而專(zhuān)門(mén)用來(lái)管理磁盤(pán)文件與目錄。,1、創(chuàng)建File類(lèi)文件對(duì)象,File類(lèi)共提供了三個(gè)不同的構(gòu)造函數(shù),以不同的參數(shù)形式靈活地接收文件和目錄名信息。(1)Filef1=newFile(Stringpath)(2)Filef2=newFile(Stringpath,Stringname)(3)Filef3=newFile(Filedir,Stringname),2、獲取文件及目錄屬性,一個(gè)對(duì)應(yīng)于某磁盤(pán)文件或目錄的File對(duì)象一經(jīng)創(chuàng)建,就可以通過(guò)調(diào)用它的方法來(lái)獲得文件或目錄的屬性。,獲得文件或目錄的屬性,較常用的方法:,3、文件及目錄操作,File類(lèi)中還定義了一些對(duì)文件或目錄進(jìn)行管理、操作的方法,常用的方法有:(1)重命名文件publicbooleanrenameTo(FilenewFile);(2)刪除文件publicvoiddelete();(3)創(chuàng)建目錄publicbooleanmkdir();,8.2.2文件流,在Java中,操作二進(jìn)制文件使用字節(jié)輸入輸流,操作字符文件使用字符輸入輸出流。對(duì)文件進(jìn)行輸入輸出處理的四個(gè)類(lèi):FileInputStream:字節(jié)文件輸入流;FileOutputStream:字節(jié)文件輸出流;FileReader:字符文件輸入流;FileWriter:字符文件輸出流。,1、字節(jié)文件輸入流讀取文件,FileInputStream類(lèi)是從InputStream類(lèi)中派生出來(lái)的輸入流類(lèi),它用于處理二進(jìn)制文件的輸入操作。它的構(gòu)造方法有下面三種形式:FileInputStream(Stringfilename);FileInputStream(Filefile);FileInputStream(FileDescriptorfdObj);,(1)FileInputStream類(lèi),文件輸入流只是建立了一條通往數(shù)據(jù)的通道,應(yīng)用程序可以通過(guò)這個(gè)通道讀取數(shù)據(jù),要實(shí)現(xiàn)讀取數(shù)據(jù)的操作,需要使用read()方法。使用read()方法有三種格式:intread();intread(byteb);intread(byteb,intoff,intlen);,(2)從文件輸入流中讀取字節(jié),【例8-1】,1./*讀取文件*/2.importjava.io.FileInputStream;3.importjavax.swing.JOptionPane;4.classExample8_15.publicstaticvoidmain(Stringargs)6.bytebuffer=newbyte2056;7.Stringstr;8.try9.Filefile=newFile("d:/jtest/test.dat");10.FileInputStreamfileInput=newFileInputStream(file);11.intbytes=fileInput.read(buffer,0,2056);/讀到的字節(jié)數(shù)12.str=newString(buffer,0,bytes);13.14.catch(Exceptione)15.16.str=e.toString();17.18.JOptionPane.showMessageDialog(null,str);19.System.exit(0);/退出程序20.21.,2、字節(jié)文件輸出流寫(xiě)入文件,FileOutputStream類(lèi)是從OutputStream類(lèi)派生出來(lái)的輸出類(lèi),它具有處理向文件中寫(xiě)數(shù)據(jù)的能力。該類(lèi)主要應(yīng)用于處理字節(jié)文件流,例如圖像文件或聲音文件等。它的構(gòu)造方法有以下三種形式:FileOutputStream(Stringfilename)FileOutputStream(Filefile)FileOutputStream(FileDescriptorfdObj)其各參數(shù)的含義同F(xiàn)ileInputStream一樣。,(1)FileOutputStream類(lèi),(2)把字節(jié)發(fā)送到文件輸出流,與輸入流的功能類(lèi)似,輸出流只是建立了一條通往數(shù)據(jù)要去的目的地的通道,數(shù)據(jù)并不會(huì)自動(dòng)進(jìn)入輸出流通道,我們要使用write()方法把字節(jié)發(fā)送到輸出流。使用write()方法有三種格式:write(intb)write(byteb)write(byteb,intoff,intlen),3、字符文件流讀寫(xiě)文本文件,處理字符文件有二個(gè)與處理二進(jìn)制文件FileInputStream和FileOutputStream等價(jià)的類(lèi):FileReader和FileWriter,它們分別是Reader和Writer類(lèi)的子類(lèi)。,(1)FileReader和FileWriter,它們的構(gòu)造方法分別有三種形式:FileReader(Stringfilename);FileReader(Filefile);FileReader(FileDescriptorfdObj);FileWriter(Stringfilename);FileWriter(Filefile);FileWriter(FileDescriptorfdObj);,此外,Java還提供了BufferedReader類(lèi)和BufferedWriter類(lèi)與FileReader類(lèi)和FileWriter類(lèi)配合使用,將字符輸入或輸出到緩沖區(qū),使數(shù)據(jù)處理速度大大加快,提高了讀寫(xiě)效率。BufferedReader的構(gòu)造方法為:BufferedReader(Readerin);BufferedWriter的構(gòu)造方法為:BufferedWriter(Writerout);,與字節(jié)輸入輸出流的功能一樣,Reader和Writer只是建立一條通往字符文件的通道,而要實(shí)現(xiàn)對(duì)字符數(shù)據(jù)的讀寫(xiě)操作,還需要讀方法和寫(xiě)方法來(lái)完成。從輸入流中按行讀取字符的方法:StringreadLine();向輸出流寫(xiě)入多個(gè)字符的方法:write(Strings,intoff,intlen);刷新BufferedWriter所建立的緩沖區(qū):flush();關(guān)閉流:close();,(2)用字符流進(jìn)行讀寫(xiě)操作的方法,【例8-3】,【程序分析】,8.3隨機(jī)存取文件和本地可執(zhí)行文件,隨機(jī)存取文件流RandomAccessFile類(lèi)可以讀寫(xiě)文件中任意位置上的字節(jié)、文本等數(shù)據(jù)。它有二個(gè)構(gòu)造方法:(1)RandomAccessFile(Stringfilename,Stringmode)(2)RandomAccessFile(Filefile,Stringmode),8.3.1隨機(jī)存取文件流,【例8-4】,1/*隨機(jī)流*/2importjava.io.*;3classExample8_445publicstaticvoidmain(Stringargs)67try8.RandomAccessFilef=newRandomAccessFile("a.txt","rw");9.f.writeBytes("Zhangsiming");10.f.close();11.12.catch(IOExceptione)13.System.out.println(e);14.15.16.,8.3.2本地可執(zhí)行文件,在Java語(yǔ)言中,使用java.lang包中的Runtime類(lèi)可以運(yùn)行本地機(jī)的可執(zhí)行文件。每個(gè)Java應(yīng)用程序都有一個(gè)Runtime類(lèi)實(shí)例對(duì)象,使應(yīng)用程序能夠與其運(yùn)行的環(huán)境相連接。但應(yīng)用程序不能創(chuàng)建自己的Runtime類(lèi)實(shí)例對(duì)象,而要通過(guò)該類(lèi)的靜態(tài)方法getRuntime()創(chuàng)建Runtime類(lèi)對(duì)象。,Runtime類(lèi)對(duì)象有幾個(gè)常用方法:,(1)exit(intstatus)(2)gc()(3)getRuntime()(4)exec(Stringcommand),【例8-7】,1.publicclassExample8_72.publicstaticvoidmain(Stringargs)3.4.try5.Runtimert=Runtime.getRuntime();6.rt.exec("c:/windows/system32/calc.exe");7.8.catch(Exceptione)System.out.println(e);9.10.,8.4數(shù)據(jù)流與對(duì)象流,8.4.1數(shù)據(jù)流,有許多應(yīng)用程序需要將處理的數(shù)據(jù)作為Java的一種基本類(lèi)型(如布爾型,字節(jié),整數(shù)和浮點(diǎn)數(shù))來(lái)使用。這就要用到數(shù)據(jù)流類(lèi)DataInputStream類(lèi)和DataOutputStream類(lèi)。這兩個(gè)數(shù)據(jù)流類(lèi)是很有用處的,它們?cè)试S程序按機(jī)器無(wú)關(guān)的格式讀取Java原始數(shù)據(jù)。,建立DataInputStream類(lèi)和DataOutputStream類(lèi)的實(shí)例:publicDataInputStream(InputStreamin);publicDataOutputStream(OutputStreamout);,數(shù)據(jù)流類(lèi)DataInputStream類(lèi)和DataOutputStream類(lèi)的常用方法:,例如,下面是使用DataInputStream的一個(gè)程序段。DataInputStreamdis;dis=newDataInputStream(newFileInputStream(“records.dat”);/現(xiàn)以Java流的形式讀入文件records.dat中的數(shù)據(jù)for(;)/設(shè)記錄由int,long,double型數(shù)據(jù)組成intfld1;longfld2;doublefld3;tryfld1=dis.readInt();fld2=dis.readLong();fld3=dis.readDouble();catch(EOFExceptione)break;,例如,下面是使用DataOutputStream實(shí)例的一個(gè)程序段。FileOutputStreamfileout=newFileOutputStream(“records.dat”);DataOutputStreamdos=newDataOutputStream(fileout);/現(xiàn)在Java數(shù)據(jù)流的形式寫(xiě)入文件records.datFor(intx=1;x<=100;x+)/設(shè)記錄由int,long,double型數(shù)據(jù)組成intfld1;longfld2;fld1=x+5;fld2=x*5;fld3=x*25;trydos.writeInt(fld1);dos.writeLong(fld2);dos.writeDouble(fld3);catch(IOExceptione)System.out.println(e);break;,Java可以將對(duì)象作為一個(gè)整體通過(guò)對(duì)象流進(jìn)行傳輸和存儲(chǔ)。,8.4.2對(duì)象流,1、對(duì)象流的構(gòu)造方法ObjectInputStream類(lèi)和ObjectOutputStream類(lèi)的構(gòu)造方法為:ObjectInputStream(InputStreamin);ObjectOutputStream(OutputStreamout);,【例8-10】,程序分析:,2、對(duì)象序列化我們把描述對(duì)象狀態(tài)的數(shù)值寫(xiě)入字節(jié)流的過(guò)程稱(chēng)為對(duì)象序列化。對(duì)象序列化就是把一個(gè)對(duì)象的狀態(tài)記錄下來(lái)。Java提供給我們的絕大多數(shù)類(lèi)對(duì)象都是序列化對(duì)象,比如組件等。用戶(hù)自己定義的類(lèi)需要序列化時(shí),必須實(shí)現(xiàn)Serializable接口。這個(gè)接口非常簡(jiǎn)單,因?yàn)樗话魏涡枰獙?shí)現(xiàn)的方法。Serializable接口包含在java.io包中。另外,一個(gè)已序列化類(lèi)的子類(lèi)也是序列化的。,1.importjava.io.*;2.importjava.util.*;3.classAddressimplementsSerializable4.5.protectedStringfirst,email;6.publicAddress()7.8.first=email=""9.10.publicAddress(String_first,String_email)11.12.first=_first;13.email=_email;14.15.publicStringtoString()16.17.returnfirst+"("+email+")"18.19.,【例8-11】,20./主類(lèi)21.publicclassExample8_1122.23.publicstaticvoidmain(Stringargs)24.25.try26.FileOutputStreamfile=newFileOutputStream("test.dat");27.ObjectOutputStreamout=newObjectOutputStream(file);28./定義對(duì)象29.Datenow=newDate();30.Addressaddress=newAddress("abc","abc");31./把對(duì)象寫(xiě)入對(duì)象流32.out.writeObject(now);33.out.writeObject(address);34.out.close();35.36.catch(IOExceptionioe)37.System.out.println(ioe);38.39.,注意:當(dāng)這個(gè)類(lèi)執(zhí)行時(shí),它創(chuàng)建一個(gè)包含恢復(fù)對(duì)象(即對(duì)對(duì)象進(jìn)行反序列化(deserialize)信息的Sample.dat數(shù)據(jù)文件。要知道這個(gè)程序是否正確地存儲(chǔ)數(shù)據(jù),最好的辦法還要看是否能夠成功地讀出所保存的數(shù)據(jù)。,8.5Java多媒體技術(shù),在Java中,可以使用Applet的靜態(tài)方法編寫(xiě)播放聲音的程序。但只能播放.au、.Wav、.Midi等格式的音頻文件。,8.5.1在Applet程序中播放聲音,1、使用play()方法播放聲音play(Urlurl,Stringname)【例8-13】1.importjava.applet.*;2.importjava.awt.Graphics;3.publicclassExample8_13extendsApplet4.publicvoidpaint(Graphicsg)5.g.drawString("Listentothemusic!",25,25);6.play(getDocumentBase(),"笨小孩.mid");7.8.,2、使用getAudioClip()方法播放聲音getAudioClip(Urlurl,Stringname);用getAudioClip()方法建立的AudioClip對(duì)象可以處理聲音:play()開(kāi)始播放loop()循環(huán)播放stop()停止播放,8.5.2Java多媒體包JMF的應(yīng)用,Java有一個(gè)多媒體包JMF(JavaMediaFramework),可以用來(lái)編寫(xiě)多媒體應(yīng)用程序。Sun公司的網(wǎng)站俄有JMF多媒體包下載,其文件名為:jmf-2_1_1e-windows-i586.exe。JMF提供給我們編寫(xiě)多媒體程序的包為javax.media。應(yīng)用JMF建立的多媒體程序可以播放.mpg、.avi、.mp3等格式的音頻及視頻文件。,建立一個(gè)多媒體程序有下列幾個(gè)步驟:,1、創(chuàng)建多媒體播放對(duì)象我們使用javax.media包中的manager類(lèi)的靜態(tài)方法createPlayer()創(chuàng)建一個(gè)多媒體播放對(duì)象player。tryURLmediaURL=newURL(getDocumentBase(),多媒體文件名);player=Manager.createPlayer(mediaURL);catch(MalformedURLExceptione)catch(IOExceptione)catch(NoPlayerExceptione),2、向多媒體播放對(duì)象注冊(cè)控制監(jiān)視器在javax.media包中有一個(gè)接口ControllerListener,我們應(yīng)用該接口向多媒體播放對(duì)象注冊(cè)控制監(jiān)視器:player.addControllerListener(監(jiān)視器);同時(shí),實(shí)現(xiàn)ControllerListener接口的方法:publicvoidcontrollerUpdate(ControllerEventevent)。在該方法中進(jìn)行創(chuàng)建播放組件及控制媒體的播放操作。,3、讓多媒體播放對(duì)象對(duì)播放媒體進(jìn)行預(yù)提取player.prefetch();多媒體播放對(duì)象進(jìn)行播放媒體預(yù)提取時(shí),將不斷獲得媒體文件的有關(guān)信息,每當(dāng)?shù)玫揭粋€(gè)新的信息將觸發(fā)ControllerEvent事件的發(fā)生。并通過(guò)監(jiān)視器調(diào)用方法controllerUpdate(ControllerEventevent)開(kāi)始播放多媒體文件。,4、啟動(dòng)多媒體播放對(duì)象player.start();5、停止并釋放多媒體播放對(duì)象player.stop();player.deallocate();player.close();示例:【例8-15】,8.5.3應(yīng)用輸入流播放音頻文件,在Sun公司的jdk自帶的rt.jar包文件中,有AudioStream.class、AudioPlayer.class類(lèi),我們使用以下語(yǔ)句進(jìn)行引用:importsun.audio.*;播放聲音文件時(shí),我們要使用輸入流:FileInputStreamfile=newFileInputStream("e.wav");AudioStreamaudio=newAudioStream(file);使用AudioPlayer類(lèi)的start()進(jìn)行播放:AudioPlayer.player.start(audio);,示例:【例8-16】,本章結(jié)束!,

注意事項(xiàng)

本文(java08(第8章輸入輸出流).ppt)為本站會(huì)員(tia****nde)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!