




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Java語言程序設(shè)計第六章 文件與數(shù)據(jù)處理,講授人:傅曉陽 教授,DavidFu,上章回顧,定義一個班級類StudentClass,在班級類中有一自定義類型student數(shù)組域,用來定義該班級有50個學生。 ArrayIndexOutOfBoundsException ArithmeticException,NumberFormatException是什么異常? 異常處理的5個關(guān)鍵字是什么,throw 與throws有什么區(qū)別,DavidFu,本章課程綱要,控制臺操作和文件操作,字節(jié)流和字符流,DavidFu,本課程綱要,標準輸入輸出流,字節(jié)流和字符流概述,字節(jié)流和字符流,數(shù)組流和字符串流,數(shù)
2、據(jù)流和緩沖流,DavidFu,字節(jié)流和字符流概述,java.io類包中提供了兩個用于字節(jié)流操作的抽象類: InputStream OutputSteam 這些類只能作為基類使用,不能獨立創(chuàng)建實例對象,必須使用其非抽象的子類來實現(xiàn)具體操作,DavidFu,InputStream類的子類,DavidFu,FilterInputStream 類的子類,DavidFu,FilterInputStream 類的子類,DavidFu,OutputStream類的子類,DavidFu,字節(jié)流和字符流概述,java.io類包中提供了兩個用于字符流操作的抽象類: Reader Writer 這些類只能作為基類使
3、用,不能獨立創(chuàng)建實例對象,必須使用其非抽象的子類來實現(xiàn)具體操作,DavidFu,Reader類的子類,DavidFu,Writer類的子類,DavidFu,本課程綱要,標準輸入輸出流,字節(jié)流和字符流概述,字節(jié)流和字符流,數(shù)組流和字符串流,數(shù)據(jù)流和緩沖流,DavidFu,標準輸入輸出流,DavidFu,標準輸入輸出流,類java.lang.System中的成員方法用于實現(xiàn)重定向功能: public static void setIn(InputStream in) 將標準輸入流重定向到參數(shù)in指向的輸入流。 Public static void setout(PrintStream out) 將
4、標準輸出流重定向為參數(shù)out指向的輸出流。 Public static void setError(PrintStream err) 將標準錯誤流重定向為參數(shù)err指向的輸出流。,DavidFu,本課程綱要,標準輸入輸出流,字節(jié)流和字符流概述,字節(jié)流和字符流,數(shù)組流和字符串流,數(shù)據(jù)流和緩沖流,DavidFu,數(shù)組流,字節(jié)輸入流java.io.ByteArrayInputStream 字節(jié)輸出流java.io.ByteArrayOutputStream 分別使用數(shù)組作為流的源和目標。 ByteArrayInputStream 包含一個內(nèi)部緩沖區(qū),該緩沖區(qū)存儲從流中讀取的字節(jié)。 ByteArray
5、OutputStream實現(xiàn)一個輸出流,其中也包含一個內(nèi)部緩沖區(qū),數(shù)據(jù)被寫入字節(jié)數(shù)組,緩沖區(qū)會隨著數(shù)據(jù)的不斷寫入而自動增長。,DavidFu,數(shù)組流,ByteArrayInputStream類的構(gòu)造方法如下: Public ByteArrayInputStream (byte buf) Public ByteArrayInputStream(byte buf ,int offset, int length) 第一個構(gòu)造方法構(gòu)造的數(shù)組字節(jié)流的源是參數(shù)buf數(shù)組。 第二個構(gòu)造方法構(gòu)造的數(shù)組字節(jié)流的源是參數(shù)為buf的數(shù)組的部分單元,這些單元是該數(shù)組從偏置參數(shù)offset開始計算的length個字節(jié)單
6、元。,DavidFu,數(shù)組流,ByteArrayOutputStream類的構(gòu)造方法如下: Public ByteArrayOutStream( ) Public ByteArrayOutStream(int size) 第一個構(gòu)造方法的數(shù)組字節(jié)輸出流指向一個默認大小為32字節(jié)的緩沖區(qū)。 第二個構(gòu)造方法所需要的數(shù)組字節(jié)輸出流緩沖區(qū)的初始大小由參數(shù)size確定。 如果寫入數(shù)據(jù)大于緩沖區(qū)時,緩沖區(qū)的容量也會自動增大。,DavidFu,字符串流,在Reader類和Writer類中分別包含了兩對子類: CharArrayReader類和StringReader類; CharArrayWriter類和S
7、tringWriter類。 CharArrayReader類構(gòu)造方法如下: public CharArrayReader(byte buf) public CharArrayReader(byte buf, int offset, int length) StringReader類構(gòu)造方法如下: Public StringReader(String str),DavidFu,字符串流,將浮點類型的數(shù)據(jù),轉(zhuǎn)換成字符串進行輸出: StringWriter strOut=new StringWriter( ); PrintWriter pWriter=new PrintWriter(strOut);
8、 float f=1.5f; pWriter.println(f); StringBuffer str=strOut.getBuffer( );,DavidFu,本課程綱要,標準輸入輸出流,字節(jié)流和字符流概述,字節(jié)流和字符流,數(shù)組流和字符串流,數(shù)據(jù)流和緩沖流,DavidFu,數(shù)據(jù)流,java.io.DataInputStream java.io.DataOutputStream 用于讀取與存儲基本數(shù)據(jù)類型的數(shù)據(jù)。 數(shù)據(jù)輸入流與輸出流確保數(shù)據(jù)流的存儲格式與基本數(shù)據(jù)類型在內(nèi)存中的存儲格式一致 這種數(shù)據(jù)操作與系統(tǒng)平臺的相關(guān)性較小。,DavidFu,數(shù)據(jù)流,DataInputStream的構(gòu)造方法如下
9、: Public DataInputStream(InputStream in) FileInputStream fin=new FileInputStream(“DataInput.txt”); DataInputStream din=new DataInputStream(fin); 通常也可以將以上兩句合并成一條語句完成: DataInputStream din=new DataInputStream( new FileInputStream(“DataInput.txt”); DataOutputStream的構(gòu)造方法為: Public DataOutputStream(OutputS
10、tream out) 其中參數(shù)out是任何基本輸出流的實例對象。,DavidFu,數(shù)據(jù)流,DavidFu,數(shù)據(jù)流,DavidFu,數(shù)據(jù)流,具體用法參見實例6-1 DataInoutStream.java,DavidFu,緩沖流,對于字節(jié)流,帶緩存的輸入流和輸出流分別為: java.io.BufferedInputStream類 java.io.BufferedOutputStream類; 對于字符流,帶緩存的輸入流和輸出流分別 java.io.BufferedReader類 java.io.BufferedWriter類。 作用:在讀取較多數(shù)據(jù)時,可以將一個較大的數(shù)據(jù)塊讀取到內(nèi)存中,或?qū)⒃趦?nèi)存
11、中一個比較大的數(shù)據(jù)塊一次性寫入到指定的數(shù)據(jù)終端中,從而達到了提高大規(guī)模數(shù)據(jù)讀寫的效率。,DavidFu,緩沖流,類java.io.BufferedInputStream的構(gòu)造方法為: public BufferedInputStream(InputStream in) 參數(shù)in指定輸入流對象實例為抽象基類InputStream類型的對象,根據(jù)java的多態(tài)性可知,所有InputStream類的非抽象子類的實例對象都可以作為其參數(shù)。 public BufferedInputStream(InputStream in, int size) size表示緩沖區(qū)的大小。第一個構(gòu)造方法沒有指定緩沖區(qū)的大
12、小,因此緩沖區(qū)的大小由系統(tǒng)指定。,DavidFu,緩沖流,類java.io.BufferedOutputStream的構(gòu)造方法為: public BufferedOutputStream(OutputStream out) 參數(shù)out指定輸出流。 public BufferedOutputStream(OutputStream out, int size) 參數(shù)size指定了緩沖區(qū)的大小。不含size的構(gòu)造方法的緩沖區(qū)大小由系統(tǒng)指定。 參見例題6-2,對比了帶緩存與不帶緩存的數(shù)據(jù)流的讀寫速度差別,DavidFu,本章課程綱要,控制臺操作和文件操作,字節(jié)流和字符流,DavidFu,本課程綱要,文
13、件輸入輸出流操作,控制臺操作,控制臺操作和文件操作,FileReader和FileWriter,文件目錄操作和隨機存取操作,DavidFu,控制臺操作字節(jié)流,從鍵盤輸入采用標準輸入流對象System.in,而該對象的類型是InputStream類 用戶從控制臺獲取數(shù)據(jù),必須能夠掃描鍵盤輸入的字符流,并取出對應(yīng)的數(shù)據(jù)。 從鍵盤讀取數(shù)據(jù) java.io.InputStreamReader的構(gòu)造方法為: Public InputStreamReader(InputStream in) 參數(shù)in是字節(jié)流的實例對象,該構(gòu)造方法可以將字節(jié)流的數(shù)據(jù)轉(zhuǎn)換成字符流輸入方式輸入數(shù)據(jù)。,DavidFu,控制臺操作字
14、節(jié)流,向控制臺輸出數(shù)據(jù) java.io.OutputStreamWriter的構(gòu)造方法為: Public OutputStreamWriter(OutputStream out) 參數(shù)out是字節(jié)流的實例對象,該構(gòu)造方法將字符流轉(zhuǎn)換成字節(jié)流輸出方式輸出數(shù)據(jù)。,DavidFu,控制臺操作字符流,在控制臺輸入輸出操作中,使用BufferedReader和BufferedWriter進行字符數(shù)據(jù)的操作 java.io.BufferedReader類的構(gòu)造方法為: public BufferedReader(Reader in) 參數(shù)in是字符輸入流的實例對象,類型為抽象基類Reader。 java.
15、io.BufferedWriter類的構(gòu)造方法為: public BufferedWriter(Writer out) 參數(shù)out是字符輸出流的實例對象,類型為抽象基類Writer。所有Writer類的非抽象的子類的實例都可以作為BufferedWriter的輸出參數(shù)。,DavidFu,控制臺操作字符數(shù)據(jù)輸入流實例,從控制臺輸入輸出將使用標準輸入輸出流,因此創(chuàng)建字符數(shù)據(jù)輸入流實例對象的語句為: BufferedReader br=new BufferedReader( new InputStreamReader(System.in); System.in是保存從鍵盤輸入數(shù)據(jù)的標準字節(jié)輸入流。
16、通過橋接類InputStreamReader類的轉(zhuǎn)換,將字節(jié)流的數(shù)據(jù)轉(zhuǎn)換成可以直接讀取的字符流的數(shù)據(jù),保存在InputStreamReader類的對象中。 InputStreamReader類的實例對象作為BufferReader類的構(gòu)造方法的參數(shù)。 參見實例6-3 BufferedReaderWriter.java,DavidFu,本課程綱要,文件輸入輸出流操作,控制臺操作,控制臺操作和文件操作,FileReader和FileWriter,文件目錄操作和隨機存取操作,DavidFu,文件數(shù)據(jù)操作,對數(shù)據(jù)文件中的數(shù)據(jù)進行讀寫可以采用字節(jié)流 FileInputStream FileOutputS
17、tream 對文本文件中的數(shù)據(jù)進行讀寫可以采用字符流 FileReader FileWriter 讀寫文件具有兩種不同的存取方式: 順序存??; 隨機存取。,DavidFu,文件字節(jié)流輸入輸出,對文件中數(shù)據(jù)的操作一般可以分為以下三個步驟: 創(chuàng)建與文件相對應(yīng)的輸入輸出流的實例對象; 通過實例對象調(diào)用相關(guān)的成員方法,對文件進行讀寫操作; 文件操作完畢,調(diào)用close方法關(guān)閉文件輸入輸出流,釋放所占用的內(nèi)存空間。,DavidFu,文件字節(jié)流輸入輸出,FileInputStream類的構(gòu)造方法為: public FileInputStream(Filefile) throws FileNotFoundE
18、xception public FileInputStream(FileDescriptorfd) throws FileNotFoundException public FileInputStream(Stringname) throws FileNotFoundException,DavidFu,FileInputStream類的成員方法,DavidFu,FileOutputStream類的構(gòu)造方法,DavidFu,FileOutputStream的成員方法,DavidFu,本課程綱要,文件輸入輸出流操作,控制臺操作,控制臺操作和文件操作,FileReader和FileWriter ,文件目錄操作和隨機存取操作,DavidFu,FileReader,FileReader類的構(gòu)造方法為,DavidFu,FileWriter,FileWriter類的部分構(gòu)造方法為,DavidFu,本課程綱要,文件輸入輸出流操作,控制臺操作,控制臺操作和文件操作,FileReader和FileWriter,文件目錄操作和隨機存取操作,DavidFu,文
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于深度學習的過濾水質(zhì)預測研究
- 沉浸式教學法在初級漢語綜合課的應(yīng)用行動研究-以泰國岱密中學為例
- 胎盤影像診斷
- 感統(tǒng)組合培訓
- 集中注意力與心理健康維護
- 闌尾手術(shù)護理查房
- 《智能網(wǎng)聯(lián)汽車技術(shù)》課件-超聲波雷達
- 預防溺水班會課件
- 頂崗實習安全課件
- 音標課件圖片高清
- 心臟驟停后高質(zhì)量目標溫度管理專家共識2024
- 合同債權(quán)轉(zhuǎn)讓及違約金協(xié)議
- 售后服務(wù)電話回訪管理辦法
- 《中國糖尿病防治指南(2024版)》更新解讀
- 2025年休克治療指南:課件解讀與實踐
- 浙江省臺州市溫嶺市2023-2024學年五年級上學期英語期末試卷
- 水穩(wěn)質(zhì)量保證措施
- 醫(yī)療器械自研軟件研究報告
- 《高性能計算 分布式存儲系統(tǒng)技術(shù)要求》
- 市場總監(jiān)聘用合同模板
- 個人租車合同范本
評論
0/150
提交評論