《Java語(yǔ)言程序設(shè)計(jì)》課件第06章 對(duì)文件的讀寫(xiě)_第1頁(yè)
《Java語(yǔ)言程序設(shè)計(jì)》課件第06章 對(duì)文件的讀寫(xiě)_第2頁(yè)
《Java語(yǔ)言程序設(shè)計(jì)》課件第06章 對(duì)文件的讀寫(xiě)_第3頁(yè)
《Java語(yǔ)言程序設(shè)計(jì)》課件第06章 對(duì)文件的讀寫(xiě)_第4頁(yè)
《Java語(yǔ)言程序設(shè)計(jì)》課件第06章 對(duì)文件的讀寫(xiě)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(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)介

【本章導(dǎo)讀】數(shù)據(jù)流。所謂流,就是指數(shù)據(jù)從數(shù)據(jù)源傳輸?shù)侥康牡氐囊环N序列,數(shù)據(jù)流分為輸入流和輸出流兩種,因?yàn)榱魇怯蟹较蛐缘?,所以?dāng)數(shù)據(jù)需要被從什么地方引入的時(shí)候,我們要使用輸出流把他們引導(dǎo)出來(lái),同樣的,當(dāng)我們要把數(shù)據(jù)寫(xiě)入到什么地方的時(shí)候需要用輸入流將他們引入目的地。Java的I/O流庫(kù)提供了大量的流類,存在包java.io中,其中有4個(gè)重要的類:InputStream(字節(jié)輸入流),Reader(字符輸入流),OutputStream(字節(jié)輸出流)和Writer(字符輸出流)。InputStreeam和Reader類為其子類提供了重要的讀取數(shù)據(jù)的read()方法,OutputStream和Writer類為其子類提供了重要的寫(xiě)入數(shù)據(jù)的write()方法。Java中的輸入/輸出流由于處理對(duì)象的不同分為字節(jié)流和字符流兩種,字節(jié)流(bytestream)為處理字節(jié)的輸入和輸出提供了方便的方法。字符流(characterstream)為字符的輸入和輸出提供了方便,它們采用了統(tǒng)一的編碼標(biāo)準(zhǔn),因而可以國(guó)際化。當(dāng)然,在某些場(chǎng)合字符流比字節(jié)流更有效。本章介紹了Java數(shù)據(jù)流的概念,InputStream、OutputStream、Reader、Writer和File類,以及對(duì)文件的管理。【本章要點(diǎn)】InputStream類與OutputStream類Reader類與Writer類文件的管理6.1InputStream類與OutputStream類InputStream類與OutputStream類屬于字節(jié)流,是抽象類,在使用的時(shí)候必須先建立實(shí)體對(duì)象。關(guān)于輸入和輸出流的定義和繼承的方法:表6-1繼承InputStream的方法 方法功能

1、intavailable()返回當(dāng)前輸入流可以讀取的字符個(gè)數(shù)

2、voidclose()關(guān)閉輸入流voidmark()在輸入流的當(dāng)前位置做標(biāo)記 3、BooleanmarkSupported()判斷當(dāng)前流是否支持標(biāo)記

4、abstractintread()讀取一個(gè)字節(jié)的數(shù)據(jù)

5、intread(byte[]b)讀取若干字節(jié)的數(shù)據(jù),并將結(jié)果返回到字節(jié)數(shù) 組b 中I 6、ntread(byte[]b,intoff,intlen)讀取若干字節(jié)的數(shù)據(jù),并將結(jié)果返回到字節(jié)數(shù)組b中,off為讀取開(kāi)始位置,len為讀取的字節(jié)個(gè)數(shù)voidreset()返回上一個(gè)標(biāo)記,用于從該標(biāo)記位置讀取數(shù)據(jù)longskip(longn)在輸入流中跳過(guò)幾個(gè)字節(jié)6.1InputStream類與OutputStream類繼承OutputStream的方法方法功能

1、voidclose()關(guān)閉輸出流

2、voidflush()輸出緩沖區(qū)刷新

3、voidwrite(byte[]b)向輸出流寫(xiě)出字節(jié)序列

4、bvoidwrite(byte[]b,intoff,intlen)向輸出流寫(xiě)出字節(jié)序列b,off是寫(xiě)入開(kāi)始位置,len為寫(xiě)入的字節(jié)個(gè)數(shù)abstractvoidwrite(intb)寫(xiě)出一個(gè)字節(jié)的數(shù)據(jù)6.2Reader類與Writer類Reader類和Writer類屬于字符流,也是抽象類,調(diào)用之時(shí)要首先創(chuàng)建實(shí)體對(duì)象。

Reader類的繼承方法 方法功能

1、abstractvoidclose()關(guān)閉輸入流

2、voidmark()在輸入流的當(dāng)前位置做標(biāo)記

3、booleanmarkSupported()判斷當(dāng)前流是否支持標(biāo)記

4、intread()讀取一個(gè)字節(jié)的數(shù)據(jù)

5、initread(char[]cbuf)讀取若干字節(jié)的數(shù)據(jù),并將結(jié)果返回到字節(jié)數(shù)組cbuf中abstractintread(char[]cbuf,intoff,intlen)讀取若干字節(jié)的數(shù)據(jù),并將結(jié)果返回到字節(jié)數(shù)組cbuf中,off為讀取開(kāi)始位置,len為讀取的字節(jié)個(gè)數(shù)booleanready()判斷該流是否準(zhǔn)備好voidreset()返回上一個(gè)標(biāo)記,用于從該標(biāo)記位置讀取數(shù)據(jù)longskip(longn)在輸入流中跳過(guò)幾個(gè)字節(jié)6.2Reader類與Writer類表6-4Writer類的繼承方法方法功能1、abstractvoidclose()關(guān)閉輸出流2、abstractvoidflush()輸出緩沖區(qū)刷新3、voidwrite(char[]cbuf)向輸出流寫(xiě)出字節(jié)序列4、cbufabstractvoidwrite(char[]cbuf,intoff,intlen)向輸出流寫(xiě)出字節(jié)序列cbuf,off是寫(xiě)入開(kāi)始位置,len為寫(xiě)入的字節(jié)個(gè)數(shù)voidwrite(intc)向輸出流寫(xiě)出單個(gè)字符voidwrite(Stringstr)向輸出流寫(xiě)出字符串voidwrite(Stringstr,intoff,intlen)向輸出流寫(xiě)出字符串,off是寫(xiě)入開(kāi)始位置,len為寫(xiě)入的字節(jié)個(gè)數(shù)6.3文件的管理在學(xué)習(xí)文件管理前,我們要先熟悉File類,因?yàn)楹芏辔募淖x寫(xiě)都和流聯(lián)系起來(lái)。Java使用File類創(chuàng)建的對(duì)象來(lái)獲取文件本身的一些信息,如文件所在的目錄、文件的長(zhǎng)度、文件讀寫(xiě)權(quán)限等,文件對(duì)象并不涉及對(duì)文件的讀寫(xiě)操作。File類一共有3中構(gòu)造方法:

File(Stringfilename); File(StringdirectoryPath,String,filename); File(Filef,Stringfilename);

其中,filename是文件名,directoryPath是一個(gè)路徑,f是一個(gè)目錄。在使用File(Stringfilename)的時(shí)候,該文件被認(rèn)定與當(dāng)前應(yīng)用程序在同一目錄中。6.3.1文件Java在文件處理的過(guò)程中,依靠File類創(chuàng)造文件對(duì)象,并通過(guò)對(duì)這個(gè)文件對(duì)象的操作來(lái)處理文件的管理。方法功能

1、StringgetName()獲取文件的名字

2、booleancanRead()判斷文件是否是可讀的

3、booleancanWrite()判斷文件是否可被寫(xiě)入

4、booleanexits()判斷文件是否存在

5、longlength()獲取文件的長(zhǎng)度(單位是字節(jié))

6、StringgetAbsolutePath()獲取文件的絕對(duì)路徑

7、StringgetParent()獲取文件的父目錄

8、booleanisFile()判斷文件是否是一個(gè)正常文件,而不是目錄

9、booleanisDirectroy()判斷文件是否是一個(gè)目錄

10、booleanisHidden()判斷文件是否是隱藏文件

11、longlastModified()獲取文件最后修改的時(shí)間(時(shí)間是從1970年午夜至文件最后修改時(shí)刻的毫秒數(shù)6.3.2文件字節(jié)流---InputStreamInputStream的子類ByteArrayInputStream與字節(jié)數(shù)組關(guān)聯(lián)的輸入流一個(gè)字節(jié)數(shù)組,作為該輸入流的數(shù)據(jù)源,內(nèi)部輸入緩沖區(qū)從其中獲取數(shù)據(jù)。FileInputStream與文件關(guān)聯(lián)的輸入流File對(duì)象、FileDescriptor對(duì)象或文件名,其代表的文件作為該輸入流的數(shù)據(jù)源,該文件必須實(shí)際存在。FilterInputStream過(guò)濾器輸入流,擁有多個(gè)子類,用于指定如何讀取數(shù)據(jù)。一個(gè)輸入流,該過(guò)濾器輸入流從其中獲取數(shù)據(jù)。ObjectInputStream對(duì)象輸入流,在對(duì)象串行化應(yīng)用中用于讀取對(duì)象信息。一個(gè)輸入流,對(duì)象輸入流從該輸入流中獲取對(duì)象信息。PipedInputStream管道輸入流,在多線程環(huán)境中用于線程間的通信。另一個(gè)線程管道輸出流,管道輸入流從中獲取數(shù)據(jù)。6.3.2文件字節(jié)流--FilterInputStreamFilterInputStream的子類BufferedInputStream擁有一個(gè)內(nèi)部輸入緩沖區(qū)的過(guò)濾器輸入流。一個(gè)輸入流,該過(guò)濾器輸入流從其中獲取數(shù)據(jù);或一個(gè)輸入流和一個(gè)整數(shù),該整數(shù)用于指定內(nèi)部輸入緩沖區(qū)的大小。DataInputStream按基本數(shù)據(jù)類型讀取數(shù)據(jù)的過(guò)濾器輸入流。一個(gè)輸入流,該過(guò)濾器輸入流從其中獲取數(shù)據(jù)。LineNumberInputStream按行讀取數(shù)據(jù)的過(guò)濾器輸入流,不建議使用。一個(gè)輸入流,該過(guò)濾器輸入流從其中獲取數(shù)據(jù)。PushbackInputStream可以將一個(gè)字節(jié)數(shù)據(jù)回送給數(shù)據(jù)源的過(guò)濾器輸入流,為編譯器提供的類,編程中極少用到。一個(gè)輸入流,該過(guò)濾器輸入流從其中獲取數(shù)據(jù);或一個(gè)輸入流和一個(gè)整數(shù),該整數(shù)用于指定回送緩沖區(qū)的大小。6.3.2文件字節(jié)流--OutputStreamOutputStream的子類ByteArrayOutputStream與字節(jié)數(shù)組關(guān)聯(lián)的輸出流。無(wú)參數(shù),輸出緩沖區(qū)字節(jié)數(shù)組大小不限;或一個(gè)整數(shù),作為輸出緩沖區(qū)字節(jié)數(shù)組的大小。FileOutputStream與文件關(guān)聯(lián)的輸出流。File對(duì)象、FileDescriptOr對(duì)象或文件名,其代表的文件作為該輸出流的輸出端,該文件是否必須可用,視操作系統(tǒng)而定一個(gè)輸出流,該過(guò)濾器輸出流向其中寫(xiě)入數(shù)據(jù)。FilterOutputStream過(guò)濾器輸出流,擁有多哥字類,用于指定如何輸出數(shù)據(jù)。一個(gè)輸出流,該過(guò)濾器輸出流向其中寫(xiě)入數(shù)據(jù)。ObjectOutputStream對(duì)象輸出流,在對(duì)象串行化應(yīng)用中用于輸出對(duì)象信息。一個(gè)輸出流,對(duì)象輸出流向該輸出流中寫(xiě)入對(duì)象信息。PipedOutputStream管道輸出流,在多線程環(huán)境中用于線程間的通信。另一個(gè)線程的管道輸入流,管道輸出流向其中寫(xiě)入數(shù)據(jù)。6.3.2文件字節(jié)流--FilterOutputStreamBufferedOutputStream擁有一個(gè)內(nèi)部輸出緩沖區(qū)的過(guò)濾器輸出流。一個(gè)輸出流,該過(guò)濾器輸出流從中獲取數(shù)據(jù);或一個(gè)輸出流和一個(gè)整數(shù),該整數(shù)用于指定內(nèi)部輸出緩沖區(qū)的大小。DataOutputStream按基本數(shù)據(jù)類型輸出數(shù)據(jù)的過(guò)濾器輸出流。一個(gè)輸出流,該過(guò)濾器輸出流向其中寫(xiě)入數(shù)據(jù)。PrintStream產(chǎn)生格式化輸出結(jié)果的過(guò)濾器輸出流,用于數(shù)據(jù)的顯示。一個(gè)輸出流,該過(guò)濾器輸出流向其中寫(xiě)入數(shù)據(jù);或一個(gè)輸出流和一個(gè)布爾值,該布爾值指定是否自動(dòng)刷新緩沖區(qū)。6.3.3文件字符流由于在讀取的過(guò)程中字節(jié)流不能直接的操作Unicode字符,而漢字在Unicode碼中被看作為一個(gè)字符,所以在使用字節(jié)流讀取的時(shí)候有可能會(huì)造成亂碼,于是Java提供了了字符流,F(xiàn)ileReader類和FileWriter類,他們?cè)诓僮鞯臅r(shí)候要獨(dú)立的創(chuàng)建對(duì)象具體方法如下:FileReader/FileWriter(Stringname)為名字為“name”的文件創(chuàng)建一個(gè)FileReader/FileWriter對(duì)象。FileReader/FileWriter(Filefile)用File對(duì)象創(chuàng)建一個(gè)FileReader/FileWriter對(duì)象。FileReader類的構(gòu)造方法intread()從文件中讀取一個(gè)字符,該方法返回的是一個(gè)int類型數(shù)據(jù)(Unicode碼),如果未讀取到字符就返回-1intread(charb[])把從文件中讀取的數(shù)據(jù)放入到b數(shù)組中,讀取的數(shù)據(jù)長(zhǎng)度就是數(shù)組b的長(zhǎng)度intread(charb[],intoff,intlen)把從文件中讀取的數(shù)據(jù)放入b數(shù)組中,開(kāi)始的位置是off長(zhǎng)度為len,如果到達(dá)文件的末尾,返回-1FileWrite類的構(gòu)造方法publicvoidwrite(charb[])把數(shù)組b中的內(nèi)容寫(xiě)入到輸出流中publicvoidwrite(charb[],intoff,intlen)把數(shù)組b中從off開(kāi)始,長(zhǎng)為len的數(shù)據(jù)寫(xiě)入到輸出流中voidwrite(Stringstr)把字符串中的全部字符寫(xiě)入到輸出流中voidwrite(Stringstr,intoff,intlen)把字符串中從off開(kāi)始,長(zhǎng)為len的數(shù)據(jù)寫(xiě)入到輸出流中本章小結(jié)本章主要介紹Java中對(duì)文件進(jìn)行讀寫(xiě)的相關(guān)知識(shí),其

溫馨提示

  • 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)論