第6講 Java 數(shù)據(jù)流1_第1頁
第6講 Java 數(shù)據(jù)流1_第2頁
第6講 Java 數(shù)據(jù)流1_第3頁
第6講 Java 數(shù)據(jù)流1_第4頁
第6講 Java 數(shù)據(jù)流1_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論