Java程序設(shè)計與應(yīng)用 課件【ch09】輸入輸出流_第1頁
Java程序設(shè)計與應(yīng)用 課件【ch09】輸入輸出流_第2頁
Java程序設(shè)計與應(yīng)用 課件【ch09】輸入輸出流_第3頁
Java程序設(shè)計與應(yīng)用 課件【ch09】輸入輸出流_第4頁
Java程序設(shè)計與應(yīng)用 課件【ch09】輸入輸出流_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

輸入輸出流第九章Java程序設(shè)計與應(yīng)用新工科建設(shè)之路·計算機(jī)類規(guī)劃教材01文件類PARTONE文件類在java.io包中,F(xiàn)ile類代表文件和目錄,主要實現(xiàn)對文件和目錄的信息訪問。如文件的權(quán)限、時間、日期和目錄路徑等,還包括創(chuàng)建文件或文件夾。但File類對象并不提供對文件內(nèi)容的處理功能,需要獲取文件內(nèi)容時要用到數(shù)據(jù)流。文件類創(chuàng)建File類對象File類有三種構(gòu)造方法,以不同的參數(shù)形式來接收文件和目錄名信息。1.publicFile(Stringpath):用指定的字符串參數(shù)path創(chuàng)建一個File類對象,path可以是帶絕對路徑的文件名或帶相對路徑的文件名,path也可以是磁盤上的目錄。如:文件類創(chuàng)建File類對象2.publicFile(Stringpath,Stringname):根據(jù)指定參數(shù)path和name創(chuàng)建一個對應(yīng)磁盤文件或目錄的File類對象。參數(shù)path指明文件或目錄的路徑,name指明文件名或目錄名。將路徑和文件名分開便于管理和修改同一目錄的文件。如:文件類創(chuàng)建File類對象3.publicFile(Filedir,Stringname):根據(jù)參數(shù)dir和name創(chuàng)建一個對應(yīng)的磁盤文件或目錄的File類對象。參數(shù)dir是一個已經(jīng)存在的File類對象,表示文件或目錄的路徑,name表示文件或目錄名。如:文件類獲取文件或目錄的信息File類中獲取文件的信息包括文件的名字、長度、路徑等。獲取文件信息的常用方法如表9-1所示。文件類獲取文件或目錄的信息【例9-1】使用File類獲取文件信息。文件類獲取文件或目錄的信息程序運行結(jié)果如下:02字節(jié)流和字符流PARTTWO字節(jié)流和字符流計算機(jī)程序一般都要進(jìn)行輸入和輸出處理。例如,從鍵盤讀取數(shù)據(jù)、從文件中讀取數(shù)據(jù)或者向文件寫入數(shù)據(jù)等。在Java中,把這些不同類型的輸入和輸出操作抽象類稱為流,用統(tǒng)一的接口來表示。通過流的方式,允許程序使用相同的方式來訪問不同的輸入和輸出設(shè)備。字節(jié)流和字符流Java的流式輸入和輸出建立在四個抽象類的基礎(chǔ)上,即InputStream類、OutputStream類、Reader類和Writer類。InputStream類和OutputStream類為字節(jié)流設(shè)計,Reader類和Writer類為字符流設(shè)計。字節(jié)流和字符類形成分離的層次結(jié)構(gòu)。字節(jié)流和字符流字節(jié)流以字節(jié)為基本處理單位,字符流以16位的Unicode表示的字符為基本處理單位。一般說來,處理字符或字符串時應(yīng)使用字符流,處理字節(jié)或二進(jìn)制對象時應(yīng)使用字節(jié)流。字節(jié)流和字符流字節(jié)流Java中的字節(jié)流用于處理字節(jié)的輸入和輸出,包括讀寫二進(jìn)制數(shù)據(jù)方面等內(nèi)容。字節(jié)流分為字節(jié)輸入流和字節(jié)輸出流,從中讀取一系列字節(jié)的對象稱為字節(jié)輸入流,而向其中寫入一系列字節(jié)的對象稱為字節(jié)輸出流。java.io包中的InputStream類和OutputStream類分別是字節(jié)輸入流和字節(jié)輸出流的根類,它們都是抽象類,不能創(chuàng)建對象,可以使用其子類來進(jìn)行實例化。字節(jié)流和字符流01字節(jié)輸入流InputStream類是所有字節(jié)輸入流的父類,它作為父類,定義了所有Java字節(jié)輸入流所具有的共性。InputStream類繼承層次結(jié)構(gòu)如圖9-1所示。字節(jié)流和字符流01字節(jié)輸入流字節(jié)輸入流常用子類及其功能如表9-2所示。字節(jié)流和字符流01字節(jié)輸入流InputStream類定義的方法如表9-3所示。字節(jié)流和字符流字節(jié)流和字符流01字節(jié)輸入流InputStream類常用方法如下。(1)intread():讀取一個字節(jié)的數(shù)據(jù),并返回讀到的字節(jié)數(shù)。當(dāng)?shù)竭_(dá)文件末尾時,返回-1。(2)intread(bytebuffer[]):將數(shù)據(jù)讀入字節(jié)數(shù)組,同時返回實際讀到的字節(jié)數(shù)。(3)intread(bytebuffer[],intoffsetintnumBytes):將輸入讀入字節(jié)數(shù)組,參數(shù)offset表示數(shù)組的偏移位置,也就是第一個字節(jié)應(yīng)放在哪個位置;參數(shù)numBytes表示讀取的最大字節(jié)數(shù)。字節(jié)流和字符流02字節(jié)輸出流OutputStream類是所有字節(jié)輸出流的父類,它是抽象類,也有若干子類。OutputStream類的繼承層次結(jié)構(gòu)如圖9-2所示。字節(jié)流和字符流02字節(jié)輸出流字節(jié)輸出流常用子類及其功能如表9-4所示。字節(jié)流和字符流02字節(jié)輸出流OutputStream類定義的方法如表9-5所示。字節(jié)流和字符流字符流同字節(jié)流一樣,字符流有兩個抽象的父類,分別是Reader類和Writer類。其中Reader類是字符輸入流,用于從某個源讀取字符。Writer類是字符輸出流,用于向某個目標(biāo)寫入字符。字節(jié)流和字符流01字符輸入流Reader類是所有字符輸入流的父類,Reader類與InputStream類的功能體系大體上是一致的,區(qū)別在于Reader類的方法是以字符為最基本單位。Reader類的繼承層次結(jié)構(gòu)如圖9-3所示。字節(jié)流和字符流01字符輸入流字符輸入流常用子類及其功能如表9-6所示。字節(jié)流和字符流01字符輸入流Reader類定義的方法如表9-7所示。字節(jié)流和字符流02字符輸出流Writer類是所有字符輸出流的父類,Writer類與OutputStream類的功能體系大體上是一致的,區(qū)別在于Writer類的方法是以字符為最基本單位。Writer類的繼承層次結(jié)構(gòu)如圖9-4所示。字節(jié)流和字符流02字符輸出流字符輸出流常用子類及其功能如表9-8所示。字節(jié)流和字符流02字符輸出流Writer類定義的方法如表9-9所示。03文件流PARTTHREE文件流在Java程序的輸入和輸出中,文件流是用得比較廣泛的一種形式。在Java的I/O庫中,Reader類和Writer類用于對文本文件進(jìn)行操作,而InputStream類和OutputStream類可以對文本文件和二進(jìn)制文件進(jìn)行操作。文件流FileInputStream類和FileOutputStream類文件字節(jié)流是指文件輸入字節(jié)流FileInputStream類和文件輸出字節(jié)流FileOutputStream類,它們完成字節(jié)的讀寫操作。FileInputStream類是InputStream類的子類,按字節(jié)讀取文件中的數(shù)據(jù)。它的兩個常用的構(gòu)造函數(shù)如下:文件流FileInputStream類和FileOutputStream類FileInputStream類是調(diào)用read()方法順序地讀取文件內(nèi)容,直到文件末尾或流被關(guān)閉。在生成FileInputStream類的對象時,如果指定的文件找不到,會發(fā)生FileNotFoundException異常,因此需要捕獲或者拋出聲明。FileOutputStream類與FileInputStream類相對應(yīng),它是OutputStream類的子類,將數(shù)據(jù)以字節(jié)的方式寫入文件。文件流FileInputStream類和FileOutputStream類它的常用構(gòu)造函數(shù)如下:FileOutputStream類是調(diào)用write()方法順序地向文件寫入數(shù)據(jù)。如果創(chuàng)建輸出流對象時,指定的文件不存在,則會創(chuàng)建一個新的文件,否則源文件的內(nèi)容會被新寫入的內(nèi)容覆蓋。如果試圖打開一個只讀文件,會引發(fā)一個IOException異常。文件流文件字符流文件字符流是指文件輸入字符流FileReader類和文件輸出字符流FileWriter類,用于創(chuàng)建文件的字符輸入流和字符輸出流對象,主要應(yīng)用于讀寫文本格式的文件。FileReader類創(chuàng)建了一個可以讀取文件內(nèi)容的Reader類。它最常用的構(gòu)造函數(shù)如下:文件流文件字符流FileWriter類創(chuàng)建了一個可以寫文件的Writer類。它最常用的構(gòu)造函數(shù)如下:其中,如果append參數(shù)為true,則將數(shù)據(jù)寫入文件末尾處,相當(dāng)于追加信息。如果append參數(shù)為false,則將數(shù)據(jù)寫入文件開始處。04緩沖流PARTFOUR緩沖流為了提高數(shù)據(jù)讀寫的效率,Java提供了帶緩沖功能的流類,包括字節(jié)緩沖流(BufferedInputStream類和BufferedOutputStream類)和字符緩沖流(BufferedReader類和BufferedWriter類)。這些類的內(nèi)部建立了一個緩沖數(shù)據(jù)的數(shù)組,當(dāng)讀寫數(shù)據(jù)時,并不馬上將數(shù)據(jù)寫到所連接的流中,而是先寫入緩沖區(qū)。緩沖流當(dāng)緩沖區(qū)滿后或者關(guān)閉流時,一次性將緩沖區(qū)的數(shù)據(jù)寫入。這樣減少了讀寫請求的次數(shù),提高了數(shù)據(jù)讀寫的效率。因此使用緩沖流的目的就是提高I/O的效率。緩沖流字節(jié)緩沖流Java的BufferedInputStream類稱為字節(jié)緩沖輸入流類,允許把任何InputStream類包裝成緩沖流。BufferedInputStream類有兩個構(gòu)造函數(shù),其語法格式如下:第一種形式生成了一個默認(rèn)緩沖長度為2048字節(jié)的緩沖流。第二種形式緩沖區(qū)的大小是由bufSize傳入的。在創(chuàng)建緩沖輸入流對象時要指定一個InputStream類作為數(shù)據(jù)源。緩沖流字節(jié)緩沖流BufferedOutputStream類稱為字節(jié)緩沖輸出流類,在創(chuàng)建對象時,要指定一個OutputStream類作為數(shù)據(jù)流向。下面是兩個可用的構(gòu)造函數(shù):第一種形式創(chuàng)建了一個使用512字節(jié)緩沖區(qū)的緩沖流。第二種形式緩沖區(qū)的大小由bufSize參數(shù)傳入。緩沖流字符緩沖流BufferedReader類是Reader類的子類,稱為字符緩沖輸入流類,在其內(nèi)部自帶一個緩沖數(shù)據(jù)的數(shù)組。它有兩個構(gòu)造函數(shù):第一種形式創(chuàng)建一個默認(rèn)緩沖區(qū)長度的緩沖字符流。第二種形式緩沖區(qū)的長度由bufSize傳入。在創(chuàng)建緩沖輸入流對象時,要指定一個字符輸入流作為數(shù)據(jù)源。緩沖流字符緩沖流BufferedWriter類是Writer的子類,稱為字符緩沖輸出流。內(nèi)部自帶一個緩沖數(shù)據(jù)的數(shù)組。BufferedWriter類有兩個構(gòu)造函數(shù):第一種形式創(chuàng)建了使用默認(rèn)大小緩沖區(qū)的緩沖流。第二種形式中的緩沖區(qū)大小是由bufSize參數(shù)傳入的。05轉(zhuǎn)換流PARTFIVE轉(zhuǎn)換流一般情況下,在進(jìn)行內(nèi)容的輸入和輸出時需要使用字節(jié)流或字符流,但是,有時需要將字符流轉(zhuǎn)換成字節(jié)流形式,或者字節(jié)流轉(zhuǎn)換成字符流形式。因此需要進(jìn)行轉(zhuǎn)換流類的操作。InputStreamReader類和OutputStreamWriter類用來在字節(jié)流與字符流之間進(jìn)行轉(zhuǎn)換。轉(zhuǎn)換流InputStreamReader類是Reader類的子類,用于將字節(jié)輸入流轉(zhuǎn)換為字符輸入流,即將字節(jié)流的輸入對象轉(zhuǎn)為字符流的輸入對象。OutputStreamWriter類是Writer類的子類,用于將字符輸出流轉(zhuǎn)換為字節(jié)輸出流,即將字符輸出流的對象轉(zhuǎn)換為字節(jié)輸出流的對象。InputStreamReader類的構(gòu)造方法如下。轉(zhuǎn)換流01InputStreamReader(InputStreamin)使用默認(rèn)字符集創(chuàng)建一個inputstreamreader對象。02InputStreamReader(InputStreamin,Charsetcs)使用給定的字符集創(chuàng)建一個inputstreamreader對象。轉(zhuǎn)換流04InputStreamReader(InputStreamin,StringcharsetName)使用指定的字符集創(chuàng)建一個inputstreamreader對象。03InputStreamReader(InputStreamin,CharsetDecoderdec)使用給定的字符集解碼創(chuàng)建一個inputstreamreader對象。轉(zhuǎn)換流以上構(gòu)造方法使用指定的字符集讀出字節(jié),并將它們解碼成字符。字符集可以用名字指定字符集或者使用平臺默認(rèn)的字符集。其中參數(shù)in為字節(jié)輸入流對象;charsetName參數(shù)為字符串表示的字符編碼名稱。轉(zhuǎn)換流OutputStreamWriter類的構(gòu)造方法如下:使用默認(rèn)的字符編碼創(chuàng)建一個OutputStreamWriter類,語法如下:使用給定的字符集創(chuàng)建一個OutputStreamWriter類,語法如下:使用給定的字符集編碼創(chuàng)建一個OutputStreamWriter類,語法如下:06隨機(jī)讀寫文件類PARTSIX隨機(jī)讀寫文件類Java提供了RandomAccessFile類來處理文件的隨機(jī)讀寫,以類似于C/C++的文件指針的方式在文件中定位,并隨機(jī)讀取指定位置的內(nèi)容。RandomAccessFile類從Object類繼承,實現(xiàn)了DataInput和DataOutput兩個接口。它不僅支持讀寫字節(jié)的方法,還支持讀寫基本數(shù)據(jù)類型的方法。隨機(jī)讀寫文件類RandomAccessFile類常用構(gòu)造方法如下:創(chuàng)建一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論