電工與電子技術(shù)電子商務(wù)電子課件JAVA語言程序設(shè)計java06ppt_第1頁
電工與電子技術(shù)電子商務(wù)電子課件JAVA語言程序設(shè)計java06ppt_第2頁
電工與電子技術(shù)電子商務(wù)電子課件JAVA語言程序設(shè)計java06ppt_第3頁
電工與電子技術(shù)電子商務(wù)電子課件JAVA語言程序設(shè)計java06ppt_第4頁
電工與電子技術(shù)電子商務(wù)電子課件JAVA語言程序設(shè)計java06ppt_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、電子課件JAVA語言程序設(shè)計java06第6章流和文件6.1流和輸入/輸出相關(guān)類6.2數(shù)據(jù)流6.3文件本章目錄6.1流和輸入/輸出相關(guān)類一、流的概念所謂流,是一個想象中的無限長的數(shù)據(jù)序列。流是Java語言輸入/輸出的方式,Java語言程序通過流來完成輸入/輸出工作。流有兩種類型:輸入流和輸出流。在java.io包中,定義了輸入流和輸出流的類,分別以不同形式完成輸入/輸出工作。二、java.io包中的輸入/輸出類輸入流和輸出流是通過4個抽象類來定義的。抽象類InputStream和OutputStream分別作為輸入字節(jié)流和輸出字節(jié)流的所有類的父類。抽象類Reader和Writer分別作為讀取字

2、符流的抽象類和寫入字符流的抽象類。6.2數(shù)據(jù)流一、標(biāo)準(zhǔn)輸入流和輸出流在java.lang包中的System類中定義了三個與設(shè)備關(guān)聯(lián)的對象:InputStream類的對象實例in作為標(biāo)準(zhǔn)輸入流對象,對應(yīng)于鍵盤輸入;PrintStream類的對象實例out作為標(biāo)準(zhǔn)輸出流對象,對應(yīng)于顯示器輸出;PrintStream類的對象實例err作為標(biāo)準(zhǔn)錯誤輸出流對象,對應(yīng)于顯示器輸出。標(biāo)準(zhǔn)輸入/輸出流的使用非常簡單。由于這3個對象實例都是以靜態(tài)方式定義在System類中的,因此可以使用類名直接訪問,并通過對象實例名訪問輸入流或輸出流的方法成員,完成標(biāo)準(zhǔn)輸入/輸出。System.out.println();Sy

3、stem.err.println();二、基于字節(jié)的輸入流和輸出流基于字節(jié)的輸入和輸出是Java語言輸入/輸出流的基本形式,也是計算機(jī)數(shù)據(jù)存儲和傳輸?shù)某S眯问健3橄箢怚nputStream和OutputStream及其子類定義了Java語言中基于字節(jié)的輸入流和輸出流。是程序中最為簡便的輸入/輸出方式,但也是最不能保留數(shù)據(jù)的原有格式的輸入/輸出方式。在InputStream中聲明了如下9個方法成員,是經(jīng)常要使用到的方法。int read() /讀下一字節(jié),返回0255之間的一個 /整數(shù)int read(byte b) /讀取最多b.length個字節(jié)寫入字節(jié)數(shù)組int read(byte b ,

4、 int off , int len) /讀取最多l(xiāng)en個字節(jié)寫入字節(jié)數(shù)組,off /為起始偏移量close() /關(guān)閉輸入流int available() /檢測無阻塞情況下可以從這個輸入流 /中讀取的字節(jié)數(shù)long skip(long n) /跳過并放棄輸入流中的n字節(jié)數(shù)據(jù)并 /返回nboolean markSupported() /測定是否支持標(biāo)記mark(int readlimit) /標(biāo)記輸入流的當(dāng)前位置,隨后 /用reset()方法把流重置于標(biāo)記處reset() /將流的當(dāng)前位置重置于mark() /方法置標(biāo)記處在OutputStream中聲明了如下5個方法成員,是經(jīng)常要使用到的方

5、法。write(int b) /寫指定字節(jié)到輸出流,內(nèi)容 /為b的低8位write(byte b) /從數(shù)組b寫b.length個字節(jié)到輸出流write(byte b , int off , int len) /從數(shù)組b起始偏移量off處寫len個 /字節(jié)到輸出流close() /關(guān)閉輸出流flush() /清空輸出流管道(pipe):PipedInputStream類和PipedOutputStream類過濾:FilterInputStream類和FilterOutputStream類打印流:PrintStream類緩沖存儲:BufferedInputStream類和BufferedOutp

6、utStream類連續(xù)輸入:SequenceInputStream類三、基于字符的輸入和輸出為了便于處理Unicode字符,在Java類庫中相應(yīng)地提供了2字節(jié)的數(shù)據(jù)流來處理字符數(shù)據(jù),即兩個抽象類Reader和Writer及其子類,分別用來讀取字符和寫入字符,完成專門的字符流處理功能。在Reader類中聲明了如下10個方法成員,是基于字符的輸入流的常用方法。close() /關(guān)閉該流mark(int readAheadLimit) /標(biāo)記流中的當(dāng)前位置markSupported() /判斷此流是否支持mark()操作read() /讀取單個字符read(char cbuf) /將字符讀入數(shù)組re

7、ad(char cbuf,int off,int len) /將len 個字符讀入數(shù)組的自off 起的 /部分read(CharBuffer target) /試圖將字符讀入指定的字符緩沖區(qū)ready() /判斷是否準(zhǔn)備讀取此流reset() /重置該流skip(long n) /跳過字符在Writer類中聲明了如下10個方法成員,是基于字符的輸出流的常用方法。append(char c) /將指定字符追加到此writerappend(CharSequence csq) /將指定字符序列追加到此writerappend(CharSequence csq,int start,int end) /

8、追加指定字符序列的子序列close() /關(guān)閉此流,但要先刷新它flush() /刷新此流write(char cbuf) /寫入字符數(shù)組write(char cbuf,int off,int len) /寫入字符數(shù)組的某一部分write(int c) /寫入單個字符write(String str) /寫入字符串write(String str,int off,int len) /寫入字符串的某一部分Reader類和Writer類中所聲明的方法都是基于字符的輸入和輸出的基本方法。字符流與字節(jié)流的相互轉(zhuǎn)換問題是必須要注意的問題。InputStreamReader類用于讀取字節(jié)數(shù)據(jù)并轉(zhuǎn)換為指定字

9、符編碼的字符,OutputStreamWriter類用于轉(zhuǎn)換指定字符編碼的字符為字節(jié)數(shù)據(jù)并寫入輸出流。FileReader類和FileWriter類則假定文件的格式已經(jīng)是字符編碼的,從而實現(xiàn)文件的字符輸入/輸出功能。特別要指出的是這兩個類在處理漢字文件的時候很有用。BufferedReader類和BufferedWriter類是帶緩沖區(qū)的讀寫字符流。CharArrayReader類和CharArrayWriter類分別從字符數(shù)組中讀字符和向字符數(shù)組中寫字符。PipedReader類和PipedWriter類則實現(xiàn)了管道字符流,用于在線程間傳遞信息。StringReader類和StringWri

10、ter類分別從字符串讀字符和向字符串寫字符。FilterReader類和FilterWriter類分別用于讀寫已過濾的字符流。PrintWriter類實現(xiàn)了字符流的打印。四、基本數(shù)據(jù)類型的輸入和輸出DataInput接口和DataOutput接口描述了從輸入流中讀取基本類型和向輸出流中寫入基本類型的方法,DataInputStream類和DataOutputStream類分別實現(xiàn)了DataInput接口和DataOutput接口。這兩個類由于分別派生自FilterInputStream類和FilterOutputStream類,亦具有過濾流的功能。另外,在RandomAccessFile類中也

11、實現(xiàn)了DataInput接口和DataOutput接口,因此該類也具備讀/寫基本數(shù)據(jù)類型的功能?;緮?shù)據(jù)類型都是可序列化的,因此都可以通過數(shù)據(jù)流進(jìn)行輸入/輸出操作。五、對象的輸入和輸出ObjectInput接口和ObjectOutput接口中分別聲明了readObject()方法和writeObject()方法,能夠從輸入/輸出流中讀/寫Object。ObjectInputStream類實現(xiàn)了ObjectInput接口和DataInput接口,能夠從輸入流中讀取對象型數(shù)據(jù)和基本數(shù)據(jù)類型數(shù)據(jù)。ObjectOutputStream類實現(xiàn)了ObjectOutput接口和DataOutput接口,能夠

12、向輸出流中寫入對象型數(shù)據(jù)和基本數(shù)據(jù)類型數(shù)據(jù)。六、字節(jié)數(shù)組的輸入和輸出ByteArrayInputStream類和ByteArrayOutputStream類中包含有一個內(nèi)部緩沖區(qū),用來從流中讀取或向流中寫入字節(jié)數(shù)組,內(nèi)部緩沖區(qū)用來緩存讀寫的字節(jié)形式的數(shù)據(jù),緩沖區(qū)的大小可以隨字節(jié)數(shù)據(jù)的多少而調(diào)節(jié)。在這兩個類中重寫了InputStream類和OutputStream類中的方法成員。6.3文件文件是具有符號名而且在邏輯上具有完整意義的信息。文件是操作系統(tǒng)對計算機(jī)外部存儲設(shè)備上所存儲的數(shù)據(jù)進(jìn)行有效管理的基本單位。Java語言將每個文件視為順序字節(jié)流。按照文件的訪問方式,文件分為順序文件和隨機(jī)訪問文件。

13、File類是Java語言進(jìn)行文件輸入/輸出的一個十分重要的類。Java語言將操作系統(tǒng)中的文件連同文件所在的路徑一并用File類來描述。在這個類中既包含文件的路徑,也包含文件的名稱。RandomAccessFile類用來生成一個隨機(jī)存取文件,以完成程序的隨機(jī)存取。FileInputStream和FileOutputStream用于實現(xiàn)從系統(tǒng)的某個文件中獲取輸入字節(jié)和向系統(tǒng)的某個文件中輸出字節(jié)的功能。一、順序文件的輸入和輸出文件File類的對象實例表示文件系統(tǒng)中的文件路徑名和文件名。該類的構(gòu)造方法:File(File parent, String child)File(String pathnam

14、e)File(String parent, String child)File(URI uri) 主要的方法成員有:String getName() /獲取文件名String getPath() /獲取文件路徑String getAbsolutePath() /獲取文件的絕對路徑String getParent() /獲取由當(dāng)前對象所表示文件的父目錄boolean renameTo(File newName) /更改文件名為參數(shù)所指定的文件名boolean exists() /檢測本文件是否存在boolean canWrite() /檢測文件是否可寫boolean canRead() /檢測文

15、件是否可讀boolean isFile() /檢測對象是否代表一個文件boolean isDirectory() /檢測對象是否代表一個目錄boolean isAbsolute() /檢測對象是否代表一個絕對路徑long lastModified() /檢測文件最后一次被修改的時間long length() /檢測文件長度boolean delete() /刪除文件boolean mkdir() /創(chuàng)建目錄String list() /列出當(dāng)前目錄中的文件【例6.1】對簡單的文本文件進(jìn)行讀/寫操作經(jīng)常使用BufferedReader類和BufferedWriter類來完成文件的讀寫功能,使用S

16、tringBuffer類來進(jìn)行字符串讀入時的緩沖存儲。對于漢字內(nèi)容的文件,通常使用FileReader類和FileWriter類來完成讀寫。經(jīng)常使用的一種“包裝流對象技術(shù)”,把一種流的服務(wù)添加到另一種流中。如:File inputfilename = open.getSelectedFile();input = new BufferedReader( new FileReader( inputfilename ) );二、隨機(jī)訪問文件的輸入和輸出隨機(jī)訪問文件類RandomAccessFile代表一個可以隨機(jī)訪問的文件,以避免對一般文件操作時從文件開始處順序讀寫文件,可以針對現(xiàn)存文件建立隨機(jī)訪問

17、文件。RandomAccessFile對象具有FileInputStream、FileOutputStream、DataInputStream和DataOutputStream的所有功能,其中定義有文件指針,并可以分別對各種基本數(shù)據(jù)類型的數(shù)據(jù)進(jìn)行專門的讀寫操作。構(gòu)造方法為public RandomAccessFile(File file , String mode)public RandomAccessFile(String name , String mode)file代表File對象,name代表文件名,mode取“r”或“rw”代表“只讀”或“讀寫”,意味著創(chuàng)建的隨機(jī)訪問文件可以是只讀的,也可以是可讀寫的。新創(chuàng)建的隨機(jī)訪問文件對象實例的文件指針是指向文件的開始位置的,當(dāng)進(jìn)行文件的讀寫操作時,文件指針將隱式地按照所讀寫的內(nèi)容的字節(jié)數(shù)自動調(diào)節(jié)位置。主要方法成員public long getFilePointer() /返回文件的當(dāng)前偏移量public long length() /返回文件的長度public void seek(long

溫馨提示

  • 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

提交評論