版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第6 6講講 JavaJava數(shù)據(jù)流數(shù)據(jù)流 主要內(nèi)容主要內(nèi)容p 數(shù)據(jù)流的基本概念數(shù)據(jù)流的基本概念p 基本字節(jié)數(shù)據(jù)流類基本字節(jié)數(shù)據(jù)流類p 基本字符流基本字符流基本的基本的 數(shù)據(jù)數(shù)據(jù)流是流是描述數(shù)據(jù)的輸入輸出過程,流是計(jì)算機(jī)描述數(shù)據(jù)的輸入輸出過程,流是計(jì)算機(jī)中的數(shù)據(jù)從源頭移動(dòng)到目的地的這種過程的抽象。中的數(shù)據(jù)從源頭移動(dòng)到目的地的這種過程的抽象。 按照按照功能功能劃分為兩種基本的流劃分為兩種基本的流:輸入流和輸出流:輸入流和輸出流輸入流輸入流: 只能從中讀取數(shù)據(jù),而不能向其寫出只能從中讀取數(shù)據(jù),而不能向其寫出數(shù)據(jù)數(shù)據(jù) 輸出流輸出流: 只能向其寫數(shù)據(jù),而不能從中讀取數(shù)只能向其寫數(shù)據(jù),而不能從中讀取數(shù)
2、據(jù)據(jù)輸入和輸出流輸入和輸出流可以被連接到文件、網(wǎng)絡(luò)套接字可以被連接到文件、網(wǎng)絡(luò)套接字或內(nèi)存緩沖區(qū)?;騼?nèi)存緩沖區(qū)。 按按處理數(shù)據(jù)的單位處理數(shù)據(jù)的單位劃分,劃分,Java支持兩支持兩 種基本種基本的流類型的流類型:字節(jié)流字節(jié)流和和字符流字符流字節(jié)流字節(jié)流字符流字符流輸入輸入InputStreamReader輸出輸出OutputStreamWriter輸入數(shù)據(jù)流輸入數(shù)據(jù)流 輸入數(shù)據(jù)流(輸入數(shù)據(jù)流(Input Stream)是指)是指只能讀不能寫只能讀不能寫的數(shù)據(jù)流的數(shù)據(jù)流,用于向計(jì)算機(jī)內(nèi)輸入信息的。,用于向計(jì)算機(jī)內(nèi)輸入信息的。 java.io包中所有輸入數(shù)據(jù)流都是由抽象類包中所有輸入數(shù)據(jù)流都是由抽象
3、類InputStream繼承而來繼承而來 從數(shù)據(jù)流中讀取數(shù)據(jù)時(shí),必須有一個(gè)從數(shù)據(jù)流中讀取數(shù)據(jù)時(shí),必須有一個(gè)數(shù)據(jù)源數(shù)據(jù)源與該與該數(shù)據(jù)流相連數(shù)據(jù)流相連InputStream主要操作方法主要操作方法 輸入數(shù)據(jù)流輸入數(shù)據(jù)流InputStream中提供的主要數(shù)據(jù)操作方中提供的主要數(shù)據(jù)操作方法:法: int read():讀一個(gè)整數(shù)讀一個(gè)整數(shù) int read(byte b ):讀多個(gè)字節(jié)到數(shù)組中讀多個(gè)字節(jié)到數(shù)組中 int read(byte b,int off,int len):從何位置開始:從何位置開始填入多少字節(jié)填入多少字節(jié) void close() 關(guān)閉數(shù)據(jù)流,同時(shí)釋放與該數(shù)據(jù)流相關(guān)的資源關(guān)閉數(shù)據(jù)
4、流,同時(shí)釋放與該數(shù)據(jù)流相關(guān)的資源也可以由運(yùn)行時(shí)系統(tǒng)自動(dòng)關(guān)閉也可以由運(yùn)行時(shí)系統(tǒng)自動(dòng)關(guān)閉輸出數(shù)據(jù)流輸出數(shù)據(jù)流 輸出數(shù)據(jù)流(輸出數(shù)據(jù)流(Output Stream)是指)是指只能寫不能讀只能寫不能讀的流,用于從計(jì)算機(jī)中輸出數(shù)據(jù)的流,用于從計(jì)算機(jī)中輸出數(shù)據(jù) java.io包中所有輸出數(shù)據(jù)流大多是從抽象類包中所有輸出數(shù)據(jù)流大多是從抽象類OutputStream繼承而來繼承而來 屬于屬于OutputStream類的方法有類的方法有: write(int b):將一個(gè)整數(shù)輸出到流中將一個(gè)整數(shù)輸出到流中 write(byte b ):將數(shù)組中的數(shù)據(jù)輸出到流中將數(shù)組中的數(shù)據(jù)輸出到流中 write(byte b
5、, int off,int len):將數(shù)組將數(shù)組b中從中從off指定的位置開始指定的位置開始len長度的數(shù)據(jù)輸出到流中長度的數(shù)據(jù)輸出到流中 void flush():將緩沖區(qū)中的數(shù)據(jù)強(qiáng)制送出將緩沖區(qū)中的數(shù)據(jù)強(qiáng)制送出 void close():關(guān)閉流關(guān)閉流.基本字節(jié)數(shù)據(jù)流類基本字節(jié)數(shù)據(jù)流類 文件數(shù)據(jù)流文件數(shù)據(jù)流包括包括FileImputStream和和FileOutputStream,用來進(jìn)行文件的用來進(jìn)行文件的I/O處理,其數(shù)據(jù)源都應(yīng)當(dāng)是文件處理,其數(shù)據(jù)源都應(yīng)當(dāng)是文件 對(duì)文件操作要定義文件流對(duì)文件操作要定義文件流 FileInputStream類用來打開一個(gè)類用來打開一個(gè)輸入文件輸入文件 F
6、ileOutputStream類用來打開一個(gè)類用來打開一個(gè)輸出文件輸出文件輸出文件輸出文件輸入文件輸入文件readwrite文件數(shù)據(jù)流文件數(shù)據(jù)流 例例1:使用:使用FileInputStream類讀取類讀取E盤盤text文件夾文件夾下的下的word.txt文件,并將讀取結(jié)果輸出到控制臺(tái)。文件,并將讀取結(jié)果輸出到控制臺(tái)。 程序代碼:程序代碼:FileInputStreamDemo.java 例例2:使用:使用FileOutputStream類實(shí)現(xiàn)向指定文件類實(shí)現(xiàn)向指定文件中寫文件的功能。中寫文件的功能。 程序代碼:程序代碼:FileOutputStreamDemo.java文件數(shù)據(jù)流文件數(shù)據(jù)流
7、文件對(duì)象的建立文件對(duì)象的建立: File fp=new File(“tempfile.txt”); 文件流的建立文件流的建立: FileInputStream in=new FileInputStream(fp); FileOutputStream out=new FileOutputStream(fp); 例例:文件拷貝文件拷貝(注意要捕獲文件異常注意要捕獲文件異常) 程序代碼:程序代碼:filestream.javafile1.txtfile2.txt輸入流輸入流輸出流輸出流緩沖區(qū)數(shù)據(jù)流緩沖區(qū)數(shù)據(jù)流 增加緩沖區(qū)流增加緩沖區(qū)流,減少訪問硬盤的次數(shù)減少訪問硬盤的次數(shù),提高效率提高效率file1
8、.txtfile2.txt輸入流輸入流輸出流輸出流輸入緩沖區(qū)輸入緩沖區(qū)輸出緩沖區(qū)輸出緩沖區(qū)文件文件文件流文件流 緩沖區(qū)流緩沖區(qū)流 目的地目的地圖圖a BufferedInputStream類讀取文件的過程類讀取文件的過程緩沖區(qū)數(shù)據(jù)流緩沖區(qū)數(shù)據(jù)流 緩沖區(qū)輸入流:緩沖區(qū)輸入流:BufferedInputStream 將它們與文件流相接將它們與文件流相接 FileInputStream in=new FileInputStream(“file1.txt”); BufferedInputStream bin= new BufferedInputStream(in) BufferedInputStrea
9、m bin1= new BufferedInputStream(in,256) 緩沖區(qū)數(shù)據(jù)流緩沖區(qū)數(shù)據(jù)流 緩沖區(qū)輸出流:緩沖區(qū)輸出流:BufferedOutputStream 將它們與文件流相接將它們與文件流相接 FileInputStream os=new FileInputStream(“file2.txt”); BufferedOutputStream bos= new BufferedOutputStream(os) BufferedOutputStream bos1= new BufferedOutputStream(os,256) BufferedOutputStream 例例:使
10、用使用BufferedOutputStream類向類向E盤的盤的Getif.txt文件中寫數(shù)據(jù)。文件中寫數(shù)據(jù)。 程序代碼:程序代碼:BufferedOutputStreamDemo.java數(shù)據(jù)輸入輸出流數(shù)據(jù)輸入輸出流 文件流和緩沖區(qū)流的處理對(duì)象是文件流和緩沖區(qū)流的處理對(duì)象是字節(jié)字節(jié)或或字節(jié)數(shù)組字節(jié)數(shù)組 DataInputStream和和DataOutputStream:一種較為高級(jí)一種較為高級(jí)的數(shù)據(jù)輸入輸出方式,除了字節(jié)和字節(jié)數(shù)組的數(shù)據(jù)輸入輸出方式,除了字節(jié)和字節(jié)數(shù)組,還可以處理還可以處理int,float,boolean等類型。等類型。 還可以用還可以用readLine()方法讀取一行信息
11、方法讀取一行信息 創(chuàng)建方式創(chuàng)建方式: FileInputStream is=new FileInputStream (”file1.txt); FileOutputStream os=new FileOutputStream(”file2.txt); DataInputStream dis = new DataInputStream(is);DataOutputStream dos = new DataOutputStream(os); DataInputStream的方法與的方法與DataOutputStream的方法的方法都是成對(duì)出現(xiàn)的都是成對(duì)出現(xiàn)的 程序舉例:程序舉例:datainput
12、_output.java管道數(shù)據(jù)流管道數(shù)據(jù)流 管道數(shù)據(jù)流主要用于線程間的通信管道數(shù)據(jù)流主要用于線程間的通信 一個(gè)線程中的一個(gè)線程中的PipedInputStream對(duì)象從另一個(gè)線對(duì)象從另一個(gè)線程中互補(bǔ)的程中互補(bǔ)的PipedOutputStream對(duì)象中接收輸入對(duì)象中接收輸入 類類PipedInputStream必須和類必須和類PipedOutputStream一起一起使用,來建立一個(gè)通信通道使用,來建立一個(gè)通信通道管道數(shù)據(jù)流必須同時(shí)具備可用的輸入端和輸出端管道數(shù)據(jù)流必須同時(shí)具備可用的輸入端和輸出端 創(chuàng)建一個(gè)通信通道創(chuàng)建一個(gè)通信通道1 1建立輸入數(shù)據(jù)流:建立輸入數(shù)據(jù)流:PipedInputStr
13、eam pis = new PipedInputStream() 建立輸出數(shù)據(jù)流:建立輸出數(shù)據(jù)流:PipedOutputStream pos = new PipedOutputStream () 輸入數(shù)據(jù)流和輸出數(shù)據(jù)流連起來輸入數(shù)據(jù)流和輸出數(shù)據(jù)流連起來pis.connect(pos)或者或者pos.connect(pis) 創(chuàng)建一個(gè)通信通道創(chuàng)建一個(gè)通信通道2 2 直接將輸入流與輸出流連接起來直接將輸入流與輸出流連接起來 PipedInputStream pis = new PipedInputStream();PipedOutputStream pos = new PipedOutputStr
14、eam(pis); PipedOutputStream pos = new PipedOutputStream();PipedInputStream pis = new PipedInputStream(pos); 使用管道流使用管道流 例例:將數(shù)據(jù)從輸出管道進(jìn)將數(shù)據(jù)從輸出管道進(jìn),從輸入管道出從輸入管道出. 參考程序:參考程序:pipedstream.java隨機(jī)訪問文件隨機(jī)訪問文件 類類RandomAccessFile來處理文件中隨機(jī)內(nèi)容的輸來處理文件中隨機(jī)內(nèi)容的輸入輸出入輸出 創(chuàng)建一個(gè)隨機(jī)訪問文件創(chuàng)建一個(gè)隨機(jī)訪問文件使用文件名使用文件名 使用文件對(duì)象使用文件對(duì)象myRAFile=new R
15、andomAccessFile(String name, String mode);myRAFile= new RandomAccessFile(“file1.txt”, “r”); myRAFile=new RandomAccessFile(File file, String mode);File myFile= new File(mymotd);myRAFile=new RandomAccessFile( myFile,“rw”); 決定是以只讀方式(決定是以只讀方式(r )還是以讀寫方式還是以讀寫方式(rw)訪訪問文件問文件 RandomAccessFile 移動(dòng)文件讀寫指針的方法移動(dòng)文
16、件讀寫指針的方法: : long getFilePointer():返回文件指針的當(dāng)前位置返回文件指針的當(dāng)前位置 void seek(long pos):將文件指針置于指定的絕對(duì)位置。位將文件指針置于指定的絕對(duì)位置。位置值以從文件開始處的字節(jié)偏移量置值以從文件開始處的字節(jié)偏移量pos來計(jì)算,來計(jì)算,pos為為0代代表文件的開始表文件的開始 long length():返回文件的長度。位置值為返回文件的長度。位置值為length(),代表,代表文件的結(jié)尾文件的結(jié)尾 例例: myRAFile=new RandomAccessFile(“temp.txt”, “rw”); myRAFile. see
17、k(myRAFile.length(); 文件的讀寫指針移至文件的末尾,如果調(diào)用文件的讀寫指針移至文件的末尾,如果調(diào)用write()方法,那么所寫入的方法,那么所寫入的信息都將添加在原文件之后。信息都將添加在原文件之后。程序舉例程序舉例字符輸入輸出流字符輸入輸出流 字節(jié)流與字符流的區(qū)別:字節(jié)流與字符流的區(qū)別:字節(jié)流字節(jié)流以字節(jié)為單位傳以字節(jié)為單位傳送數(shù)據(jù),可以是任何類型的數(shù)據(jù),如文本、音頻、送數(shù)據(jù),可以是任何類型的數(shù)據(jù),如文本、音頻、視頻、圖片等。視頻、圖片等。 字符流字符流以字符為單位傳送數(shù)據(jù),只能傳送文本類以字符為單位傳送數(shù)據(jù),只能傳送文本類型的數(shù)據(jù)。型的數(shù)據(jù)。 字符流用于處理字符數(shù)據(jù)的讀
18、取和寫入,字符流用于處理字符數(shù)據(jù)的讀取和寫入,Reader類和類和Writer類是字符的抽象類。類是字符的抽象類。FileReader類類 FileReader類繼承類繼承Reader類,并實(shí)現(xiàn)了讀取字符類,并實(shí)現(xiàn)了讀取字符輸入流的各種方法。其構(gòu)造方法如下:輸入流的各種方法。其構(gòu)造方法如下: 1)FileReader(File file); 參數(shù)說明:參數(shù)說明:file是要讀入數(shù)據(jù)的文件對(duì)象。是要讀入數(shù)據(jù)的文件對(duì)象。 2)FileReader(String filename); 參數(shù)說明:參數(shù)說明: filename表示文件名表示文件名FileReader類類 例:使用例:使用FileRead
19、er類實(shí)現(xiàn)讀取類實(shí)現(xiàn)讀取word.txt文件中文件中的數(shù)據(jù),并將其在控制臺(tái)上輸出。的數(shù)據(jù),并將其在控制臺(tái)上輸出。 程序代碼:程序代碼:FileReaderDemo.javaFileWriter類類 FileWriter類實(shí)現(xiàn)了文件字符輸出流,繼承類實(shí)現(xiàn)了文件字符輸出流,繼承Writer類。其構(gòu)造方法如下:類。其構(gòu)造方法如下: 1)FileWriter(File file); 參數(shù)說明:參數(shù)說明:file是要寫入數(shù)據(jù)的文件對(duì)象。是要寫入數(shù)據(jù)的文件對(duì)象。 2)FileWriter(String filename); 參數(shù)說明:參數(shù)說明: filename表示文件名表示文件名FileWriter類類
20、 例:使用字符輸入、輸出流,將文字信息加密后例:使用字符輸入、輸出流,將文字信息加密后保存到指定文件,再讀取。保存到指定文件,再讀取。 程序代碼:程序代碼:FileWriterDemo.java課堂練習(xí)課堂練習(xí) 1.簡單鍵盤記錄器簡單鍵盤記錄器對(duì)于木馬、病毒等,通??蓪?duì)于木馬、病毒等,通??梢员O(jiān)視用戶在鍵盤上的操作,如輸入用戶名和密碼,以監(jiān)視用戶在鍵盤上的操作,如輸入用戶名和密碼,從而盜取賬號(hào)。本實(shí)例將完成一個(gè)類似的功能,它從而盜取賬號(hào)。本實(shí)例將完成一個(gè)類似的功能,它主要用于記錄用戶名和密碼,并且明文顯示在文本主要用于記錄用戶名和密碼,并且明文顯示在文本文件中。文件中。 運(yùn)行效果如左圖運(yùn)行效果如左圖,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二手房出租合同范文2024年
- 業(yè)務(wù)委托合同協(xié)議書樣本
- 2024年集裝箱出租合同書
- 講師與教育平臺(tái)合作合同
- 買賣房屋定金協(xié)議書
- 房屋租賃合同的違約責(zé)任解析
- 中小學(xué)信息技術(shù)教師應(yīng)具備哪些能力與素質(zhì)
- 簡單卷閘門合同書樣本2024年
- 2024年國際快遞合作協(xié)議書
- 客戶服務(wù)協(xié)議書
- 20世紀(jì)時(shí)尚流行文化智慧樹知到期末考試答案章節(jié)答案2024年浙江理工大學(xué)
- (高清版)JTGT 3331-04-2023 多年凍土地區(qū)公路設(shè)計(jì)與施工技術(shù)規(guī)范
- 增值服務(wù)具體方案怎么寫范文
- 公路銑刨機(jī)整機(jī)的設(shè)計(jì)含全套CAD圖紙
- 六年級(jí)語文上冊(cè)06.第六單元教學(xué)導(dǎo)讀
- 「」初中人教版七年級(jí)英語常用方位介詞和短語鞏固練習(xí)
- 機(jī)器人學(xué)課程教學(xué)大綱
- 基于PLC的谷物烘干機(jī)控制系統(tǒng)設(shè)計(jì)--程序代碼-附 錄
- 社區(qū)治安巡邏隊(duì)工作方案
- GHTF—質(zhì)量管理體系--過程驗(yàn)證指南中文版
- 信用社(銀行)借新還舊申請(qǐng)書(精編版)
評(píng)論
0/150
提交評(píng)論