第10章輸入輸出流與文件處理_第1頁(yè)
第10章輸入輸出流與文件處理_第2頁(yè)
第10章輸入輸出流與文件處理_第3頁(yè)
第10章輸入輸出流與文件處理_第4頁(yè)
第10章輸入輸出流與文件處理_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第十章第十章 輸入輸出流與文件處理輸入輸出流與文件處理10.1 輸入輸出流概述輸入輸出流概述10.2 字節(jié)流類字節(jié)流類10.3 字符流類字符流類10.4 文件處理文件處理10.1 輸入輸出流概述輸入輸出流概述1.什么是流什么是流n流是一個(gè)很形象的概念。當(dāng)程序需要讀取數(shù)據(jù)的時(shí)候,就開(kāi)流是一個(gè)很形象的概念。當(dāng)程序需要讀取數(shù)據(jù)的時(shí)候,就開(kāi)啟一個(gè)通向數(shù)據(jù)源的流,這個(gè)數(shù)據(jù)源可以是文件、內(nèi)存或是啟一個(gè)通向數(shù)據(jù)源的流,這個(gè)數(shù)據(jù)源可以是文件、內(nèi)存或是網(wǎng)絡(luò)連接。類似的,當(dāng)程序需要寫(xiě)入數(shù)據(jù)的時(shí)候,就會(huì)開(kāi)啟網(wǎng)絡(luò)連接。類似的,當(dāng)程序需要寫(xiě)入數(shù)據(jù)的時(shí)候,就會(huì)開(kāi)啟一個(gè)通向目的地的流。這時(shí)候你就可以想象數(shù)據(jù)在這其中一個(gè)通向

2、目的地的流。這時(shí)候你就可以想象數(shù)據(jù)在這其中“流流“動(dòng)一樣。動(dòng)一樣。10.1 輸入輸出流概述輸入輸出流概述2.流的分類流的分類n按數(shù)據(jù)的傳輸方向,分為輸入流和輸出流。按數(shù)據(jù)的傳輸方向,分為輸入流和輸出流。n輸入流是數(shù)據(jù)從外部設(shè)備(如文件)流向內(nèi)存(程序)輸入流是數(shù)據(jù)從外部設(shè)備(如文件)流向內(nèi)存(程序)對(duì)輸入流只能進(jìn)行讀操作對(duì)輸入流只能進(jìn)行讀操作n輸出流是數(shù)據(jù)從內(nèi)存(程序)流向外部設(shè)備(如文件)輸出流是數(shù)據(jù)從內(nèi)存(程序)流向外部設(shè)備(如文件)對(duì)輸出流只能進(jìn)行寫(xiě)操作對(duì)輸出流只能進(jìn)行寫(xiě)操作n按處理的單位,分為字節(jié)流和字符流。按處理的單位,分為字節(jié)流和字符流。10.1 輸入輸出流概述輸入輸出流概述3.流

3、采用緩沖區(qū)技術(shù)流采用緩沖區(qū)技術(shù)n對(duì)流進(jìn)行讀對(duì)流進(jìn)行讀/寫(xiě)操作的最小單位是寫(xiě)操作的最小單位是字節(jié)字節(jié),傳輸效率低下。,傳輸效率低下。n為為提高傳輸速率提高傳輸速率,可將一塊,可將一塊內(nèi)存空間內(nèi)存空間設(shè)計(jì)成緩沖區(qū),暫設(shè)計(jì)成緩沖區(qū),暫存待傳送的數(shù)據(jù),這樣一次可讀存待傳送的數(shù)據(jù),這樣一次可讀/寫(xiě)若干字節(jié)。寫(xiě)若干字節(jié)。n配備緩沖區(qū)的流稱為緩沖流。配備緩沖區(qū)的流稱為緩沖流。n在緩沖區(qū)寫(xiě)滿之前若要進(jìn)行數(shù)據(jù)傳輸,稱為在緩沖區(qū)寫(xiě)滿之前若要進(jìn)行數(shù)據(jù)傳輸,稱為立即傳輸立即傳輸(flush)操作。操作。10.1 輸入輸出流概述輸入輸出流概述4.流的作用與特點(diǎn)流的作用與特點(diǎn)n設(shè)計(jì)流的目的,是為了使數(shù)據(jù)傳輸獨(dú)立于相關(guān)設(shè)備

4、。設(shè)計(jì)流的目的,是為了使數(shù)據(jù)傳輸獨(dú)立于相關(guān)設(shè)備。n程序中需要根據(jù)待傳輸數(shù)據(jù)的不同特性而使用不同的流,程序中需要根據(jù)待傳輸數(shù)據(jù)的不同特性而使用不同的流,數(shù)據(jù)傳輸給指定設(shè)備后的操作由系統(tǒng)執(zhí)行設(shè)備驅(qū)動(dòng)程序數(shù)據(jù)傳輸給指定設(shè)備后的操作由系統(tǒng)執(zhí)行設(shè)備驅(qū)動(dòng)程序完成,這樣,程序中不需要關(guān)注設(shè)備實(shí)現(xiàn)細(xì)節(jié),使得一完成,這樣,程序中不需要關(guān)注設(shè)備實(shí)現(xiàn)細(xì)節(jié),使得一個(gè)源程序能夠用于多種輸入個(gè)源程序能夠用于多種輸入/輸出設(shè)備,從而增強(qiáng)了程序輸出設(shè)備,從而增強(qiáng)了程序的可重用性。的可重用性。n流的特點(diǎn)是數(shù)據(jù)的輸入和輸出必須按順序進(jìn)行,不能隨流的特點(diǎn)是數(shù)據(jù)的輸入和輸出必須按順序進(jìn)行,不能隨機(jī)讀取。機(jī)讀取。10.1 輸入輸出流概

5、述輸入輸出流概述5.java.io包中的類包中的類1)字節(jié)流)字節(jié)流InputStream類類10.1 輸入輸出流概述輸入輸出流概述5.java.io包中的類包中的類1)字節(jié)流)字節(jié)流OutputStream類類10.1 輸入輸出流概述輸入輸出流概述5.java.io包中的類包中的類2)字符流)字符流Reader類類10.1 輸入輸出流概述輸入輸出流概述5.java.io包中的類包中的類2)字符流)字符流Writer類類10.2 字節(jié)流類字節(jié)流類n字節(jié)流每次讀寫(xiě)字節(jié)流每次讀寫(xiě)8位二進(jìn)制數(shù),由于它只能將數(shù)據(jù)位二進(jìn)制數(shù),由于它只能將數(shù)據(jù)以二進(jìn)制的原始方式讀寫(xiě),而不分解、重組和理解以二進(jìn)制的原始方式

6、讀寫(xiě),而不分解、重組和理解這些數(shù)據(jù),所以可以使之變換、恢復(fù)到原來(lái)的有意這些數(shù)據(jù),所以可以使之變換、恢復(fù)到原來(lái)的有意義的狀態(tài),因此字節(jié)流又被稱為二進(jìn)制字節(jié)流或位義的狀態(tài),因此字節(jié)流又被稱為二進(jìn)制字節(jié)流或位流。流。nInputStream和和OutputStream類是抽象類,定義類是抽象類,定義了字節(jié)流的基本輸入輸出操作方法。由于不能創(chuàng)建了字節(jié)流的基本輸入輸出操作方法。由于不能創(chuàng)建它們的實(shí)例對(duì)象,故而它們派生出不同的子類,每它們的實(shí)例對(duì)象,故而它們派生出不同的子類,每個(gè)子類實(shí)現(xiàn)一種特殊的字節(jié)流輸入或輸出操作。個(gè)子類實(shí)現(xiàn)一種特殊的字節(jié)流輸入或輸出操作。10.2.1 字節(jié)輸入輸出流字節(jié)輸入輸出流1.

7、InputStream類類npublic abstract int read() throws IOException npublic int read(byteb) throws IOException npublic int read(byteb, intoff, intlen) throws IOExceptionnpublic long skip(long n) throws IOExceptionnpublic void close() throws IOException 10.2.1 字節(jié)輸入輸出流字節(jié)輸入輸出流2.OutputStream類類npublic abstract v

8、oid write(intb) throws IOException npublic void write(byteb) throws IOExceptionnpublic void write(byteb, intoff, intlen) throws IOException npublic void flush() throws IOException npublic void close() throws IOException10.2.1 字節(jié)輸入輸出流字節(jié)輸入輸出流3.標(biāo)準(zhǔn)輸入輸出標(biāo)準(zhǔn)輸入輸出n在計(jì)算機(jī)系統(tǒng)中,標(biāo)準(zhǔn)輸入是從鍵盤(pán)等外部輸入設(shè)在計(jì)算機(jī)系統(tǒng)中,標(biāo)準(zhǔn)輸入是從鍵盤(pán)等外部輸入設(shè)備

9、中獲得數(shù)據(jù),標(biāo)準(zhǔn)輸出是向顯示器或打印機(jī)等外備中獲得數(shù)據(jù),標(biāo)準(zhǔn)輸出是向顯示器或打印機(jī)等外部設(shè)備發(fā)送數(shù)據(jù)。部設(shè)備發(fā)送數(shù)據(jù)。npublic final static InputStream in;npublic final static PrintStream out;npublic final static PrintStream err;n例例10.110.2.2 文件字節(jié)輸入輸出流類文件字節(jié)輸入輸出流類1.FileInputStream類類npublic class FileInputStream extends InputStreamnpublic FileInputStream(Filef

10、ile) throws FileNotFoundException npublic FileInputStream(Stringname) throws FileNotFoundException 10.2.2 文件字節(jié)輸入輸出流類文件字節(jié)輸入輸出流類2.FileOutputStream類類npublic class FileOutputStream extends OutputStreamnpublic FileOutputStream(Filefile) throws FileNotFoundException npublic FileOutputStream(Stringname) th

11、rows FileNotFoundException n例例10.2 10.2.3 數(shù)據(jù)輸入輸出流數(shù)據(jù)輸入輸出流1.DataInputStream數(shù)據(jù)字節(jié)輸入流數(shù)據(jù)字節(jié)輸入流npublic DataInputStream(InputStreamin) npublic final boolean readBoolean() throws IOException npublic final byte readByte() throws IOException npublic final short readShort() throws IOException npublic final char

12、readChar() throws IOException npublic final int readInt() throws IOException npublic final long readLong() throws IOException npublic final float readFloat() throws IOException npublic final double readDouble() throws IOException 10.2.3 數(shù)據(jù)輸入輸出流數(shù)據(jù)輸入輸出流2.DataOutputStream數(shù)據(jù)字節(jié)輸出流數(shù)據(jù)字節(jié)輸出流npublic DataOutpu

13、tStream(OutputStreamout)npublic final void writeBoolean(booleanv) throws IOException npublic final void writeByte(intv) throws IOException npublic final void writeShort(intv) throws IOException npublic final void writeChar(intv) throws IOException npublic final void writeInt(intv) throws IOException

14、 npublic final void writeLong(longv) throws IOException npublic final void writeFloat(floatv) throws IOException npublic final void writeDouble(doublev) throws IOException n例例10.310.2.4 對(duì)象輸入輸出流對(duì)象輸入輸出流1.ObjectInputStream對(duì)象字節(jié)輸入流對(duì)象字節(jié)輸入流npublic ObjectInputStream(InputStreamin) throws IOException npublic

15、 final Object readObject() throws IOException, ClassNotFoundException 2.ObjectOutputStream對(duì)象字節(jié)輸出流對(duì)象字節(jié)輸出流npublic ObjectOutputStream(OutputStreamout) throws IOException npublic final void writeObject(Objectobj) throws IOException n例例10.4序列化接口序列化接口java.io.Serializable10.3 字符流類字符流類n字符流一次讀寫(xiě)字符流一次讀寫(xiě)16位二進(jìn)制數(shù)

16、,并將其作為一個(gè)位二進(jìn)制數(shù),并將其作為一個(gè)字符而不是二進(jìn)制位來(lái)處理。字符而不是二進(jìn)制位來(lái)處理。n字符流的源和目標(biāo)是文本文件,可以直接打開(kāi)。字符流的源和目標(biāo)是文本文件,可以直接打開(kāi)。10.3.1 字符輸入輸出流字符輸入輸出流1.Reader類類npublic abstract class Reader extends Object implements Readable, Closeablenpublic int read() throws IOExceptionnpublic int read(charcbuf) throws IOExceptionnpublic int read(charc

17、buf , intoff, intlen) throws IOExceptionnpublic void close() throws IOException10.3.1 字符輸入輸出流字符輸入輸出流2.Writer類類npublic abstract class Writer extends Object implements Appendable, Closeable, Flushablenpublic void write(int c) throws IOExceptionnpublic void write(charcbuf) throws IOExceptionnpublic voi

18、d write(charcbuf , intoff, intlen) throws IOExceptionnpublic void write(Stringstr) throws IOExceptionnpublic void write(Stringstr, intoff, intlen) throws IOException10.3.2 文件字符輸入輸出流文件字符輸入輸出流n文件字符輸入流文件字符輸入流FileReader和文件字符輸出流和文件字符輸出流FileWriter用于文本文件的輸入輸出處理,與文件用于文本文件的輸入輸出處理,與文件字節(jié)輸入流字節(jié)輸入流FileInputStream

19、和文件字節(jié)輸出流和文件字節(jié)輸出流FileOutputStream的功能相似,但處理的基本單的功能相似,但處理的基本單位是字符。位是字符。npublic FileReader (Stringname) throws FileNotFoundException npublic FileWriter (Stringname) throws FileNotFoundException 10.3.3 字符緩沖流字符緩沖流1.BufferedReader緩沖字符輸入流緩沖字符輸入流npublic BufferedReader(Readerin) npublic String readLine() thro

20、ws IOException2.BufferedWriter緩沖字符輸出流緩沖字符輸出流npublic BufferedWriter(Writerout) npublic void newLine() throws IOExceptionn例例10.5 10.4 文件處理文件處理n文件是存儲(chǔ)在外部存儲(chǔ)介質(zhì)上的具有標(biāo)識(shí)名的文件是存儲(chǔ)在外部存儲(chǔ)介質(zhì)上的具有標(biāo)識(shí)名的一組相關(guān)信息的集合。一組相關(guān)信息的集合。n文件系統(tǒng)性提供文件系統(tǒng)性提供“按名存取按名存取”實(shí)現(xiàn)文件的存儲(chǔ)實(shí)現(xiàn)文件的存儲(chǔ)和檢索。和檢索。n樹(shù)形樹(shù)形目錄結(jié)構(gòu)目錄結(jié)構(gòu)n文件分為文本文件和二進(jìn)制文件。文件分為文本文件和二進(jìn)制文件。n文件的存取方法

21、有順序存取、隨機(jī)存取。文件的存取方法有順序存取、隨機(jī)存取。10.4.2 File類類nFile類主要用于描述系統(tǒng)中的文件在磁盤(pán)上的存儲(chǔ)類主要用于描述系統(tǒng)中的文件在磁盤(pán)上的存儲(chǔ)情況,而情況,而File類的對(duì)象主要用來(lái)獲取文件本身的一類的對(duì)象主要用來(lái)獲取文件本身的一些信息,還可利用些信息,還可利用File對(duì)象來(lái)對(duì)文件系統(tǒng)做一些查對(duì)象來(lái)對(duì)文件系統(tǒng)做一些查詢與設(shè)置的動(dòng)作,但詢與設(shè)置的動(dòng)作,但不涉及對(duì)文件的讀寫(xiě)操作不涉及對(duì)文件的讀寫(xiě)操作。n不管是文件還是目錄,在不管是文件還是目錄,在Java中都以中都以File的實(shí)例來(lái)的實(shí)例來(lái)表示。表示。10.4.2 File類類1.構(gòu)造方法構(gòu)造方法npublic Fi

22、le(Stringpathname) npublic File(Stringparent, Stringchild) npublic File(Fileparent, Stringchild)10.4.2 File類類2.成員方法成員方法npublic boolean exists()npublic boolean canRead()npublic long lastModified()npublic String getAbsolutePath()npublic String getName()npublic boolean isFile()npublic long length() npublic File listFiles()npublic boolean mkdir() npublic boolean delete()例10.610.4.3 文件過(guò)濾器接口文件過(guò)濾器接口nFilenameFilter 接口接口nboolean accept(Filedir, Stringname)nFile類中的方法類中的方法npublic File listFiles(FilenameFilte

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論