版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java語言程序設(shè)計(jì)清華大學(xué)出版社第第8章輸入輸出流章輸入輸出流第第 8 章章 主要內(nèi)容主要內(nèi)容1、輸入輸出流、輸入輸出流 2、文件處理、文件處理3、Java多媒體技術(shù)多媒體技術(shù) 8.1輸入輸出流輸入輸出流8.1.1 流的概念流的概念 流是一個(gè)比文件所包含范圍更廣的概念。流是一個(gè)比文件所包含范圍更廣的概念。流是一個(gè)可被順序訪問的數(shù)據(jù)序列,它是對(duì)計(jì)流是一個(gè)可被順序訪問的數(shù)據(jù)序列,它是對(duì)計(jì)算機(jī)輸入數(shù)據(jù)和輸出數(shù)據(jù)的抽象。算機(jī)輸入數(shù)據(jù)和輸出數(shù)據(jù)的抽象。圖8.1 “流”是數(shù)據(jù)從一種設(shè)備流向另一種設(shè)備的過程 8.1.2io類庫類庫 流序列中的數(shù)據(jù)既可以是未經(jīng)加工流序列中的數(shù)據(jù)既可以是未經(jīng)加工的原始二進(jìn)制數(shù)
2、據(jù),也可以是經(jīng)一定編的原始二進(jìn)制數(shù)據(jù),也可以是經(jīng)一定編碼處理后符合某種格式規(guī)定的特定數(shù)碼處理后符合某種格式規(guī)定的特定數(shù)據(jù)。所以據(jù)。所以Java中的數(shù)據(jù)流有字節(jié)流和字中的數(shù)據(jù)流有字節(jié)流和字符流之分。符流之分。 在在java.io包中有四個(gè)基本類:包中有四個(gè)基本類:InputStream、OutputStream及及Reader、Writer類,它們分別處理字節(jié)類,它們分別處理字節(jié)流和字符流。如圖流和字符流。如圖8.2所示。所示。 圖8.2流的分類1、字節(jié)流、字節(jié)流 在在io類庫中,類庫中,InputStream和和OutputStream是處理字節(jié)數(shù)據(jù)的基本是處理字節(jié)數(shù)據(jù)的基本輸入輸出類,它們處
3、于輸入輸出類,它們處于java.io包最頂包最頂層。這兩個(gè)類均為抽象類,也就是說它層。這兩個(gè)類均為抽象類,也就是說它們不能被實(shí)例化,必須生成子類之后才們不能被實(shí)例化,必須生成子類之后才能實(shí)現(xiàn)一定的功能。能實(shí)現(xiàn)一定的功能。 在在java.io包中定義了很多這二個(gè)基本類具體實(shí)現(xiàn)包中定義了很多這二個(gè)基本類具體實(shí)現(xiàn)輸入輸出功能的子類,表輸入輸出功能的子類,表8.1為部分常用字節(jié)輸入為部分常用字節(jié)輸入流類和字節(jié)輸出流子類的功能。流類和字節(jié)輸出流子類的功能。類 名功 能FileInputStream 和FileOutputStream文件流,實(shí)現(xiàn)在本地磁盤文件系統(tǒng)中的文件進(jìn)行順序讀寫操作。ByteArra
4、yInputStream和ByteArrayOutputStream字節(jié)型數(shù)組流,實(shí)現(xiàn)與內(nèi)存緩沖區(qū)的同步讀寫及對(duì)CPU寄存器的讀寫操作。ObjectInputStream 和ObjectOutputStream對(duì)象流,將對(duì)象作為一個(gè)數(shù)據(jù)通過流進(jìn)行傳輸和存儲(chǔ)。FilterInputStream 和FilterOutputStream過濾流,是一個(gè)抽象類。它們都有實(shí)現(xiàn)具體功能的子類。DataInputStream 和DataOutputStream數(shù)據(jù)輸入輸出流,是過濾流的子類,實(shí)現(xiàn)獨(dú)立于具體機(jī)器的帶格式的讀寫操作。BufferedInputStream 和BufferedOutputStream
5、將數(shù)據(jù)讀寫到緩沖區(qū),它們是過濾流的子類。表8.1 部分常用字節(jié)輸入流類和輸出流類的功能2、字符流、字符流 處理字符數(shù)據(jù)的基本輸入輸出的類處理字符數(shù)據(jù)的基本輸入輸出的類是是Reader和和Writer,它們也處于,它們也處于java.io包最頂層,且這兩個(gè)類均為抽象類,包最頂層,且這兩個(gè)類均為抽象類,Java.io包中其它處理字符流的類都是從包中其它處理字符流的類都是從這兩個(gè)類繼承而來的。這兩個(gè)類繼承而來的。 由于由于Reader和和Writer是抽象類,因此,是抽象類,因此,在在java.io包中定義了許多這二個(gè)處理字符流包中定義了許多這二個(gè)處理字符流基本類具體實(shí)現(xiàn)輸入輸出功能的子類,表基本類
6、具體實(shí)現(xiàn)輸入輸出功能的子類,表8.2為部分常用字符輸入流類和字符輸出流為部分常用字符輸入流類和字符輸出流子類的功能。子類的功能。類 名功 能BufferedReader 和BufferedWriter用于字符流讀寫緩沖存儲(chǔ)。InputStreamReader 和OutputStreamWriter用于將字節(jié)碼與字符碼相互轉(zhuǎn)換。FileReader 和FileWriter用于字符文件的輸入輸出。表8.2 部分常用字符輸入流類和輸出流類的功能 8.2文件處理文件處理8.2.1 文件與目錄管理文件與目錄管理 在Java語言的java.io包中,由File類提供了描述文件和目錄的操作與管理方法。但Fi
7、le類不是InputStream、OutputStream或Reader、Writer的子類,因?yàn)樗回?fù)責(zé)數(shù)據(jù)的輸入輸出,而專門用來管理磁盤文件與目錄。1、創(chuàng)建、創(chuàng)建File類文件對(duì)象類文件對(duì)象 File類共提供了三個(gè)不同的構(gòu)造函數(shù),類共提供了三個(gè)不同的構(gòu)造函數(shù),以不同的參數(shù)形式靈活地接收文件和目以不同的參數(shù)形式靈活地接收文件和目錄名信息。錄名信息。(1)File f1=new File ( String path )(2) File f2=new File(String path, String name)(3) File f3=new File(File dir, String name)
8、 2、獲取文件及目錄屬性、獲取文件及目錄屬性 一個(gè)對(duì)應(yīng)于某磁盤文件或目錄的一個(gè)對(duì)應(yīng)于某磁盤文件或目錄的File對(duì)對(duì)象一經(jīng)創(chuàng)建,象一經(jīng)創(chuàng)建, 就可以通過調(diào)用它的方法來就可以通過調(diào)用它的方法來獲得文件或目錄的屬性。獲得文件或目錄的屬性。 獲得文件或目錄的屬性獲得文件或目錄的屬性,較常用的方法較常用的方法: 方法名方法名 功能功能public boolean exists( ) 判斷文件或目錄是否存在判斷文件或目錄是否存在public boolean isFile( ) 判斷是文件還是目錄判斷是文件還是目錄 public boolean isDirectory( )判斷是文件還是目錄判斷是文件還是目
9、錄public String getName( )返回文件名或目錄名返回文件名或目錄名public String getPath( )返回文件或目錄的路徑。返回文件或目錄的路徑。public long length( )獲取文件的長(zhǎng)度獲取文件的長(zhǎng)度 public String list ( )將目錄中所有文件名保存在字符串將目錄中所有文件名保存在字符串?dāng)?shù)組中返回。數(shù)組中返回。 3、文件及目錄操作、文件及目錄操作File類中還定義了一些對(duì)文件或目錄進(jìn)行管類中還定義了一些對(duì)文件或目錄進(jìn)行管理、操作的方法,常用的方法有:理、操作的方法,常用的方法有:(1)重命名文件)重命名文件 public boo
10、lean renameTo( File newFile ); (2)刪除文件)刪除文件 public void delete( ); (3)創(chuàng)建目錄)創(chuàng)建目錄 public boolean mkdir( ); 8.2.2 文件流文件流 在在Java中,操作二進(jìn)制文件使用字節(jié)輸中,操作二進(jìn)制文件使用字節(jié)輸入輸流,操作字符文件使用字符輸入輸出入輸流,操作字符文件使用字符輸入輸出流。對(duì)文件進(jìn)行輸入輸出處理的四個(gè)類:流。對(duì)文件進(jìn)行輸入輸出處理的四個(gè)類:FileInputStream:字節(jié)文件輸入流;:字節(jié)文件輸入流;FileOutputStream:字節(jié)文件輸出流;:字節(jié)文件輸出流;FileReade
11、r:字符文件輸入流;:字符文件輸入流;FileWriter:字符文件輸出流。:字符文件輸出流。 1、字節(jié)文件輸入流讀取文件、字節(jié)文件輸入流讀取文件 FileInputStream類是從類是從InputStream 類中派生出來的輸入流類,它用于處理類中派生出來的輸入流類,它用于處理二進(jìn)制文件的輸入操作。它的構(gòu)造方法二進(jìn)制文件的輸入操作。它的構(gòu)造方法有下面三種形式:有下面三種形式:FileInputStream(String filename);FileInputStream(File file);FileInputStream( FileDescriptor fdObj); (1)FileIn
12、putStream類類 文件輸入流只是建立了一條通往數(shù)據(jù)的通文件輸入流只是建立了一條通往數(shù)據(jù)的通道,應(yīng)用程序可以通過這個(gè)通道讀取數(shù)據(jù),要道,應(yīng)用程序可以通過這個(gè)通道讀取數(shù)據(jù),要實(shí)現(xiàn)讀取數(shù)據(jù)的操作,需要使用實(shí)現(xiàn)讀取數(shù)據(jù)的操作,需要使用read()方法。方法。使用使用read()方法有三種格式:方法有三種格式:int read( );int read( byte b );int read( byte b ,int off, int len);(2)從文件輸入流中讀取字節(jié))從文件輸入流中讀取字節(jié) 【例【例8-1 】1./* 讀取文件讀取文件 */2. import java.io.FileInput
13、Stream;3. import javax.swing.JOptionPane;4. class Example8_15. public static void main( String args )6. byte buffer = new byte2056;7. String str;8. try9. File file=new File(d:/jtest/test.dat);10. FileInputStream fileInput = new FileInputStream(file);11. int bytes = fileInput.read( buffer, 0, 2056 );
14、 /讀到的字節(jié)數(shù)讀到的字節(jié)數(shù)12. str = new String( buffer, 0, bytes ); 13. 14. catch(Exception e)15.16. str= e.toString();17.18. JOptionPane.showMessageDialog(null,str);19. System.exit(0); /退出程序退出程序20. 21. 2、字節(jié)文件輸出流寫入文件、字節(jié)文件輸出流寫入文件 FileOutputStream類是從類是從OutputStream類派類派生出來的輸出類,它具有處理向文件中寫數(shù)據(jù)的能生出來的輸出類,它具有處理向文件中寫數(shù)據(jù)的能力
15、。該類主要應(yīng)用于處理字節(jié)文件流,例如圖像文力。該類主要應(yīng)用于處理字節(jié)文件流,例如圖像文件或聲音文件等。它的構(gòu)造方法有以下三種形式:件或聲音文件等。它的構(gòu)造方法有以下三種形式:FileOutputStream( String filename )FileOutputStream( File file )FileOutputStream(FileDescriptor fdObj)其各參數(shù)的含義同其各參數(shù)的含義同F(xiàn)ileInputStream一樣。一樣。(1)FileOutputStream類類(2)把字節(jié)發(fā)送到文件輸出流)把字節(jié)發(fā)送到文件輸出流 與輸入流的功能類似,輸出流只是建立了與輸入流的功能類
16、似,輸出流只是建立了一條通往數(shù)據(jù)要去的目的地的通道,數(shù)據(jù)并一條通往數(shù)據(jù)要去的目的地的通道,數(shù)據(jù)并不會(huì)自動(dòng)進(jìn)入輸出流通道,我們要使用不會(huì)自動(dòng)進(jìn)入輸出流通道,我們要使用write()方法把字節(jié)發(fā)送到輸出流。方法把字節(jié)發(fā)送到輸出流。使用使用write()方法有三種格式:方法有三種格式:write(int b) write(byte b) write(byte b, int off, int len)例例8-2 讀取圖像文件讀取圖像文件a.jpg,更名為,更名為b.jpg8.5 Java多媒體技術(shù)多媒體技術(shù) 在Java中,可以使用Applet的靜態(tài)方法編寫播放聲音的程序。但只能播放.au、.Wav、.
17、Midi等格式的音頻文件。8.5.1在Applet程序中播放聲音1、使用play()方法播放聲音play(Url url,String name)【例8-13】1.import java.applet.*;2.import java.awt.Graphics;3.public class Example8_13 extends Applet 4. public void paint(Graphics g) 5. g.drawString(Listen to the music!,25,25);6. play(getDocumentBase(),笨小孩.mid);7. 8.2、使用getAudi
18、oClip()方法播放聲音getAudioClip(Url url,String name);用getAudioClip()方法建立的AudioClip對(duì)象可以處理聲音:play()開始播放loop()循環(huán)播放stop() 停止播放8.5.2Java多媒體包多媒體包JMF的應(yīng)用的應(yīng)用Java有一個(gè)多媒體包JMF(Java Media Framework),可以用來編寫多媒體應(yīng)用程序。Sun公司的網(wǎng)站俄有JMF多媒體包下載,其文件名為:jmf-2_1_1e-windows-i586.exe。JMF提供給我們編寫多媒體程序的包為javax.media。應(yīng)用JMF建立的多媒體程序可以播放.mpg、.
19、avi、.mp3等格式的音頻及視頻文件。建立一個(gè)多媒體程序有下列幾個(gè)步驟:建立一個(gè)多媒體程序有下列幾個(gè)步驟:1、創(chuàng)建多媒體播放對(duì)象我們使用javax.media包中的manager類的靜態(tài)方法createPlayer()創(chuàng)建一個(gè)多媒體播放對(duì)象player。try URL mediaURL=new URL(getDocumentBase(), 多媒體文件名);player=Manager.createPlayer(mediaURL);catch(MalformedURLException e) catch(IOException e) catch(NoPlayerException e) 2、向多媒體播放對(duì)象注冊(cè)控制監(jiān)視器在javax.media包中有一個(gè)接口ControllerListener,我們應(yīng)用該接口向多媒體播放對(duì)象注冊(cè)控制監(jiān)視器:player.addControllerListener(監(jiān)視器);同時(shí),實(shí)現(xiàn)ControllerListener接口的方法:public v
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 營(yíng)運(yùn)車輛轉(zhuǎn)讓協(xié)議書范本
- 2025年全球及中國藻源蝦青素行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國低扭矩軸承行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國卡布奇諾發(fā)泡劑行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 二零二四樣板房樣板間銷售合作協(xié)議3篇
- 實(shí)驗(yàn)室裝修設(shè)計(jì)委托協(xié)議
- 物聯(lián)網(wǎng)工程居間合同
- 2024-2027年中國電腦散熱器行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略咨詢報(bào)告
- 半導(dǎo)體設(shè)備研發(fā)及生產(chǎn)合同
- 銷售模型制作合同
- 《BIM土建算量與云計(jì)價(jià)》完整課件
- 2024中國南光集團(tuán)限公司校園招聘高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 2024-2030年中國氣凝膠干凝膠市場(chǎng)發(fā)展戰(zhàn)略與未來投資競(jìng)爭(zhēng)力剖析研究報(bào)告
- 新客戶建檔協(xié)議書范文范本
- 2024簡(jiǎn)單的租房合同樣本下載
- 2024-2030年中國AI智能鼠標(biāo)市場(chǎng)營(yíng)銷模式與競(jìng)爭(zhēng)前景分析研究報(bào)告
- DL-T499-2001農(nóng)村低壓電力技術(shù)規(guī)程
- 【家庭教育】0-3歲嬰幼兒早教訓(xùn)練方案
- 國家中長(zhǎng)期科技發(fā)展規(guī)劃(2021-2035)
- 虛擬電廠平臺(tái)建設(shè)方案
- 詩經(jīng)《氓》上課用講解課件
評(píng)論
0/150
提交評(píng)論