第20章文件(IO)操作_第1頁
第20章文件(IO)操作_第2頁
第20章文件(IO)操作_第3頁
第20章文件(IO)操作_第4頁
第20章文件(IO)操作_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第20章

文件IO操作

File類

RandomAccessFile類流類字符編碼對象序列化20.1File類

File類是IO包中唯一代表磁盤文件本身的對象,F(xiàn)ile類定義了一些與平臺無關的方法來操縱文件,通過調用File類提供的各種方法,能夠完成創(chuàng)建、刪除文件,重命名文件,判斷文件的讀寫權限及文件是否存在,設置和查詢文件的最近修改時間等操作【范例20-1】File方法的使用范例20.2RandomAccessFile類

RandomAccessFile類是Java語言中功能最為豐富的文件訪問類,它提供了眾多的文件訪問方法,RandomAccessFile能以只讀或讀寫方式打開文件,使用哪種方式取決于用戶創(chuàng)建RandomAccessFile類對象的構造方法

newRandomAccessFile(f,"rw"); //讀寫方式

newRandomAccessFile(f,"r"); //只讀方式【范例20-2】員工信息類的使用范例20.3流類20.3.1字節(jié)流20.3.2字符流20.3.3管道流20.3.4ByteArrayInputStream與ByteArrayOutputStream20.3.5System.in與System.out20.3.6打印流20.3.7DataInputStream與DataOutputStream20.3.8合并流20.3.9字節(jié)流與字符流的轉換20.3.10IO包中的類層次關系圖20.3流類

Java的流式輸入/輸出建立在四個抽象類的基礎上:InputStream,OutputStream,Reader和Writer,操作文件流時,不管是字節(jié)流還是字符流都可以按照以下的方式進行。⑴使用File類找到一個文件

⑵通過File類的對象去實例化字節(jié)流或字符流的子類

⑶進行字節(jié)(字符)的讀、寫操作

⑷關閉文件流20.3.1字節(jié)流

1.InputStream(輸入字節(jié)流)方法描述intavailable()返回當前可讀的輸入字節(jié)數(shù)voidclose()關閉輸入流。關閉之后若再讀取則會產(chǎn)生IOException異常voidmark(intnumBytes)在輸入流的當前點放置一個標記。該流在讀取N個Bytes字節(jié)前都保持有效booleanmarkSupported()如果調用的流支持mark()/reset()就返回true20.3.1字節(jié)流

方法描述intread()如果下一個字節(jié)可讀則返回一個整型,遇到文件尾時返回-1intread(bytebuffer[])試圖讀取buffer.length個字節(jié)到buffer中,并返回實際成功讀取的字節(jié)數(shù)。遇到文件尾時返回-1intread(bytebuffer[],intoffset,intnumBytes)試圖讀取buffer中從buffer[offset]開始的numBytes個字節(jié),返回實際讀取的字節(jié)數(shù)。遇到文件結尾時返回-1voidreset()重新設置輸入指針到先前設置的標志處longskip(longnumBytes)忽略numBytes個輸入字節(jié),返回實際忽略的字節(jié)數(shù)20.3.1字節(jié)流

2.OutputStream(輸出字節(jié)流)方法描述voidclose()關閉輸出流。關閉后的寫操作會產(chǎn)生IOException異常voidflush()定制輸出狀態(tài)以使每個緩沖器都被清除,也就是刷新輸出緩沖區(qū)voidwrite(intb)向輸出流寫入單個字節(jié)。注意參數(shù)是一個整型數(shù),它允許設計者不必把參數(shù)轉換成字節(jié)型就可以調用write()方法voidwrite(bytebuffer[])向一個輸出流寫一個完整的字節(jié)數(shù)組voidwrite(bytebuffer[],intoffset,intnumBytes)寫數(shù)組buffer以buffer[offset]為起點的numBytes個字節(jié)區(qū)域內(nèi)的內(nèi)容20.3.1字節(jié)流

3.FileInputStream(文件輸入流)FileInputStream類創(chuàng)建一個能從文件讀取字節(jié)的InputStream類,它的兩個常用的構造方法如下:FileInputStream(Stringfilepath)

FileInputStream(FilefileObj)20.3.1字節(jié)流

4.FileOutputStream(文件輸出流)

FileOutputStream創(chuàng)建了一個可以向文件寫入字節(jié)的類OutputStream,它常用的構造方法如下:FileOutputStream(StringfilePath)FileOutputStream(FilefileObj)FileOutputStream(StringfilePath,booleanappend)【范例20-3】向文件中寫入字符串并讀出20.3.2字符流

1.Reader方法描述abstractvoidclose()關閉輸入源。進一步的讀取將會產(chǎn)生IOException異常voidmark(intnumChars)在輸入流的當前位置設立一個標志。該輸入流在numChars個字符被讀取之前有效booleanmarkSupported()該流支持mark()/reset()則返回trueintread()如果調用的輸入流的下一個字符可讀則返回一個整型。遇到文件尾時返回-120.3.2字符流

方法描述intread(charbuffer[])試圖讀取buffer中的buffer.length個字符,返回實際成功讀取的字符數(shù)。遇到文件尾返回-1abstractintread(charbuffer[],intoffset,intnumChars)試圖讀取buffer中從buffer[offset]開始的numChars個字符,返回實際成功讀取的字符數(shù)。遇到文件尾返回-1booleanready()如果下一個輸入請求不等待則返回true,否則返回falselongskip(longnumChars)跳過numChars個輸入字符,返回跳過的字符設置輸入指針到先前設立的標志處數(shù)20.3.2字符流

2.Writer方法描述abstractvoidclose()關閉輸出流。關閉后的寫操作會產(chǎn)生IOException異常abstractvoidflush()定制輸出狀態(tài)以使每個緩沖器都被清除。也就是刷新輸出緩沖voidwrite(intch)向輸出流寫入單個字符。注意參數(shù)是一個整型,它允許設計者不必把參數(shù)轉換成字符型就可以調用write()方法voidwrite(charbuffer[])向一個輸出流寫一個完整的字符數(shù)組20.3.2字符流

方法描述abstractvoidwrite(charbuffer[],intoffset,intnumChars)向調用的輸出流寫入數(shù)組buffer以buffer[offset]為起點的N個Chars區(qū)域內(nèi)的內(nèi)容voidwrite(Stringstr)向調用的輸出流寫strvoidwrite(Stringstr,intoffset,intnumChars)寫數(shù)組str中以制定的offset為起點的長度為numChars個字符區(qū)域內(nèi)的內(nèi)容20.3.2字符流

3.FileReaderFileReader類創(chuàng)建了一個可以讀取文件內(nèi)容的Reader類。它最常用的構造方法顯示如下:FileReader(StringfilePath)FileReader(FilefileObj)20.3.2字符流

4.FileWriterFileWriter創(chuàng)建一個可以寫文件的Writer類。它最常用的構造方法如下:FileWriter(StringfilePath)FileWriter(StringfilePath,booleanappend)FileWriter(FilefileObj)【范例20-4】字符流使用范例20.3.3管道流管道流主要作用是可以連接兩個線程間的通信。管道流也分為字節(jié)流(PipedInputStream、PipedOutputStream)與字符流(PipedReader、PipedWriter)兩種類型【范例20-5】管道流使用范例20.3.4ByteArrayInputStream與ByteArrayOutputStreamByteArrayInputStream是輸入流的一種實現(xiàn),它有兩個構造方法,每個構造方法都需要一個字節(jié)數(shù)組來作為其數(shù)據(jù)源ByteArrayInputStream(byte[]buf)ByteArrayInputStream(byte[]buf,intoffse,intlength)ByteArrayOutputStream()BuyteArrayoutputStream(int)【范例20-6】ByteArrayInputStream類使用范例20.3.5System.in與System.out為了支持標準輸入輸出設備,Java定義了兩個特殊的流對象:System.in和System.out,System.in對應鍵盤,System.out對應顯示器20.3.6打印流PrintStream類提供了一系列的print和println方法,PrintStream有下面幾個構造方法:PrintStream(OutputStreamout)

PrintStream(OutputStreamout,booleanauotflush)PrintStream(OutputStreamout,booleanauotflush,Stringencoding)【范例20-7】PrintWriter類向屏幕輸出信息范例【范例20-8】PrintWriter向文件中輸出信息范例20.3.7DataInputStream與DataOutputStream

DataInputStream與DataOutputStream提供了與平臺無關的數(shù)據(jù)操作【范例20-9】DataInputStream與DataOutputStream使用范例20.3.8合并流采用SequenceInputStream類,可以實現(xiàn)兩個文件的合并操作【范例20-10】使用合并流將兩個文件合并20.3.9字節(jié)流與字符流的轉換Java支持字節(jié)流和字符流,但有時需要字節(jié)流和字符流之間的轉換,InputStreamReader和OutputStreamWriter,這兩個類是字節(jié)流和字符流之間相互轉換的類,InputStreamReader可以將一個字節(jié)流中的字節(jié)解碼成字符,OuputStreamWriter將寫入的字符編碼成字節(jié)后寫入一個字節(jié)流【范例20-11】字符流的轉換使用范例20.3.10IO包中的類層次關系圖1.字節(jié)輸入流(InputStream)20.3.10IO包中的類層次關系圖1.字節(jié)輸出流(OutputStream)20.3.10IO包中的類層次關系圖3.字符輸入流20.3.10IO包中的類層次關系圖4.字符輸出流20.4字符編碼計算機里只有數(shù)字,字符與數(shù)字對應的編碼固定下來后,這套編碼規(guī)則被稱為ASCII碼許多國家都把本地的字符集引入了計算機,擴展了計算機中字符的范圍,中國大陸為每一個中文字符都指定了一個對應的數(shù)字,這套編碼規(guī)則稱為GBK為了解決各個國家和地區(qū)使用自不同的本地化字符編碼帶來的不便,人們將全世界所有的符號進行了統(tǒng)一編碼,稱之為Unicode編碼

溫馨提示

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

評論

0/150

提交評論