版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章
Java語(yǔ)言
的輸入輸出
與文件處理2本章主要內(nèi)容流的概念處理字節(jié)流的基本類:InputStream和OutputStream處理字符流的基本類:Reader和Writer標(biāo)準(zhǔn)輸入輸出文件管理類:File310.1Java語(yǔ)言的輸入輸出類庫(kù)輸入輸出是指程序與外部設(shè)備或其他計(jì)算機(jī)進(jìn)行交互的操作。Java語(yǔ)言把這些輸入與輸出操作用流來(lái)實(shí)現(xiàn),用統(tǒng)一的接口來(lái)表示。
Java語(yǔ)言的輸入輸出功能必須借助于輸入輸出類庫(kù)java.io包來(lái)實(shí)現(xiàn)。410.1.1流的概念流(Stream)是指計(jì)算機(jī)各部件之間的數(shù)據(jù)流動(dòng)。按照數(shù)據(jù)的傳輸方向,流可分為輸入流與輸出流,從流的內(nèi)容上劃分,流分為字符流和字節(jié)流。輸入輸出流數(shù)據(jù)流分為輸入流和輸出流兩大類。數(shù)據(jù)流是Java程序發(fā)送和接收數(shù)據(jù)的一個(gè)通道,通常應(yīng)用程序中使用輸入流讀出數(shù)據(jù),輸出流寫入數(shù)據(jù),就好像數(shù)據(jù)流入到程序或從程序中流出。
過(guò)程如教材圖10.1所示。510.1.1流的概念流式輸入輸出的最大特點(diǎn)是數(shù)據(jù)的獲取和發(fā)送是沿著數(shù)據(jù)序列順序進(jìn)行,每一個(gè)數(shù)據(jù)都必須等待排在它前面的數(shù)據(jù)讀入或送出之后才能被讀寫,每次讀寫操作處理的都是序列中剩余的未讀寫數(shù)據(jù)中的第一個(gè),而不能隨意選擇輸入輸出的位置。緩沖流為一個(gè)流配有一個(gè)緩沖區(qū)(Buffer),一個(gè)緩沖區(qū)就是專門用于傳送數(shù)據(jù)的一塊內(nèi)存。當(dāng)向一個(gè)緩沖流寫入數(shù)據(jù)時(shí),系統(tǒng)將數(shù)據(jù)發(fā)送到緩沖區(qū),而不是直接發(fā)送到外部設(shè)備。緩沖區(qū)自動(dòng)記錄數(shù)據(jù),當(dāng)緩沖區(qū)滿時(shí),系統(tǒng)將數(shù)據(jù)全部發(fā)送到相應(yīng)的外部設(shè)備。輸出雷同。610.1.2輸入輸出流類庫(kù)要java.io包中有四個(gè)基本類:InputStream、OutputStream及Reader、Writer類,它們分別處理字節(jié)流和字符流。它們之間的相互關(guān)系如下:
InputStream、OutputStream、Reader與Writer是抽象類,用于數(shù)據(jù)流的輸入輸出;File是文件類,用于對(duì)磁盤文件與文件夾的管理;RandomAccessFile是隨機(jī)訪問(wèn)文件類,用于實(shí)現(xiàn)對(duì)磁盤文件的隨機(jī)讀寫操作。
輸入/輸出流字節(jié)流:處理字節(jié)數(shù)據(jù)(基本類型為InputStream、OutputStream)字符流:處理字符數(shù)據(jù)(基本類型為Reader、Writer)710.2使用InputStream和OutputStream流類InputStream和OutputStream類是Java語(yǔ)言里用來(lái)處理以位(bit)為主的流,它除了可用來(lái)處理二進(jìn)制文件(binaryfile)的數(shù)據(jù)之外,也可用來(lái)處理純文本文件。810.2.1基本的輸入輸出流
InputStream類常用的方法及功能見(jiàn)教材表10.1。由于InputStream是抽象類,所以程序中創(chuàng)建的輸入流對(duì)象一般是InputStream某個(gè)子類的對(duì)象,通過(guò)調(diào)用該對(duì)象繼承的read()方法就可實(shí)現(xiàn)對(duì)相應(yīng)外設(shè)的輸入操作。注意:流中的方法都聲明拋出異常,所以程序中調(diào)用流方法時(shí)必須處理異常,否則編譯不能通過(guò)。910.2.1基本的輸入輸出流
OutputStream類常用的方法及功能見(jiàn)教材表10.2。由于OutputStream是抽象類,所以程序中創(chuàng)建的輸出流對(duì)象一般是OutputStream某個(gè)子類的對(duì)象,通過(guò)調(diào)用該對(duì)象繼承的write()方法就可以實(shí)現(xiàn)對(duì)相應(yīng)外設(shè)的輸出操作。
1010.2.2輸入輸出流的應(yīng)用文件輸入(FileInputStream)輸出流(FileOutputStream
)主要負(fù)責(zé)完成對(duì)本地磁盤文件的順序輸入與輸出操作。FileInputStream類的對(duì)象表示一個(gè)文件字節(jié)輸入流,從中可讀取一個(gè)字節(jié)或一批字節(jié)。FileOutputStream類的對(duì)象表示一個(gè)字節(jié)文件輸出流,可向流中寫入一個(gè)字節(jié)或一批字節(jié)。在生成該類的對(duì)象時(shí),若指定的文件不存在,則創(chuàng)建一個(gè)新的文件,若已存在,則清除原文件的內(nèi)容。FileInputStream類和FileOutputStream類的構(gòu)造方法見(jiàn)教材表10.3和10.4。
見(jiàn)例10.1和10.21110.2.2輸入輸出流的應(yīng)用順序輸入流(SequenceInputStream)
它是InputStream的直接子類,其功能是將多個(gè)輸入流順序連接在一起,形成單一的輸入數(shù)據(jù)流,沒(méi)有對(duì)應(yīng)的輸出數(shù)據(jù)流存在。管道輸入輸出流
它提供了利用管道方式進(jìn)行數(shù)據(jù)輸入輸出管理的類。管道流用來(lái)將一個(gè)程序或線程的輸出連接到另外一個(gè)程序或線程作為輸入,使得相連線程能夠通過(guò)PipedInputStream和PipedOutputStream類進(jìn)行數(shù)據(jù)交換,從而可以實(shí)現(xiàn)程序內(nèi)部線程間的通信或不同程序間的通信。10.2.2輸入輸出流的應(yīng)用過(guò)濾輸入輸出流過(guò)濾輸入流類FilterInputStream和過(guò)濾輸出流類FilterOutputStream,分別實(shí)現(xiàn)了在數(shù)據(jù)的讀、寫操作的同時(shí)進(jìn)行數(shù)據(jù)處理,它們是InputStream和OutputStream類的直接子類。標(biāo)準(zhǔn)輸入輸出Java系統(tǒng)事先在System類中定義了靜態(tài)流對(duì)象System.in對(duì)應(yīng)于輸入流,通常指鍵盤輸入設(shè)備;System.out對(duì)應(yīng)于輸出流,通常指顯示器;System.err對(duì)應(yīng)于標(biāo)準(zhǔn)錯(cuò)誤輸出設(shè)備。12見(jiàn)例10.410.3使用Reader和Writer流類
雖然Reader和Write類可用來(lái)處理字符串的讀取和寫入的操作,但通常我們并不直接使用這兩個(gè)類,而是使用它們的子類來(lái)創(chuàng)建對(duì)象,再利用對(duì)象來(lái)處理讀寫操作1310.3.1使用FileReader類讀取文件在使用FileReader類讀取文件時(shí),必須先調(diào)用FileReader()構(gòu)造方法創(chuàng)建FileReader類的對(duì)象,再利用它來(lái)調(diào)用read()方法,F(xiàn)ileReader()構(gòu)造方法見(jiàn)教材表10.13。14見(jiàn)例10.510.3.2使用FileWriter類寫入文件FileWriter類繼承自O(shè)utputStreamWriter類,而OutputStreamWriter類又繼承自Writer類,因此Writer類與OutputStreamWriter類所提供的方法均可供FileWriter類所創(chuàng)建的對(duì)象使用。15見(jiàn)例10.610.3.3使用BufferedReader
類讀取文件BufferedReader類繼承自Reader類,BufferedReader類是用來(lái)讀取緩沖區(qū)里的數(shù)據(jù)。使用BufferedReader類來(lái)讀取緩沖區(qū)中的數(shù)據(jù)之前,必須先創(chuàng)建FileReader類對(duì)象,再以該對(duì)象為參數(shù)來(lái)創(chuàng)建BufferedReader類的對(duì)象,然后才可以利用此對(duì)象來(lái)讀取緩沖區(qū)中的數(shù)據(jù)。16見(jiàn)例10.710.3.4使用BufferedWriter類
寫入文件使用BufferedWriter類將數(shù)據(jù)寫入緩沖區(qū)的過(guò)程與使用BufferedReader類從緩沖區(qū)里讀出數(shù)據(jù)的過(guò)程相似。首先必須先創(chuàng)建FileWriter類對(duì)象,再以該對(duì)象為參數(shù)來(lái)創(chuàng)建BufferedWriter類的對(duì)象,然后就可以利用此對(duì)象來(lái)將數(shù)據(jù)寫入緩沖區(qū)中。所不同的是,緩沖區(qū)內(nèi)的數(shù)據(jù)最后必須要用flush()方法將緩沖區(qū)清空,也就是將緩沖區(qū)中的數(shù)據(jù)全部寫到文件內(nèi)。17見(jiàn)例10.810.4文件的處理與隨機(jī)訪問(wèn)
在java.io包中定義了一個(gè)File類專門用來(lái)管理磁盤文件和文件夾,而不負(fù)責(zé)數(shù)據(jù)的輸入輸出。每
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年環(huán)境保護(hù)設(shè)施建設(shè)資金支付協(xié)議范本13篇
- 2025年綜合性物業(yè)安保保潔服務(wù)合同范本3篇
- 國(guó)際貿(mào)易第六章出口合同訂立2025年保險(xiǎn)條款與理賠規(guī)定3篇
- 2025年電子政務(wù)平臺(tái)開發(fā)與運(yùn)維外包服務(wù)合同2篇
- 2025年校園更夫崗位職責(zé)與應(yīng)急預(yù)案合同3篇
- 二零二五版食品生產(chǎn)設(shè)備采購(gòu)合同范本指南2篇
- 2025年無(wú)償使用工廠內(nèi)倉(cāng)庫(kù)場(chǎng)地儲(chǔ)存貨物合同范本3篇
- 2025年外匯投資代理協(xié)議
- 2025年度毛陽(yáng)中心學(xué)校校園環(huán)境衛(wèi)生管理合同4篇
- 2025年人才招聘競(jìng)業(yè)禁禁協(xié)議
- 2024版塑料購(gòu)銷合同范本買賣
- 【高一上】【期末話收獲 家校話未來(lái)】期末家長(zhǎng)會(huì)
- JJF 2184-2025電子計(jì)價(jià)秤型式評(píng)價(jià)大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 有毒有害氣體崗位操作規(guī)程(3篇)
- 二年級(jí)下冊(cè)加減混合豎式練習(xí)360題附答案
- 吞咽解剖和生理研究
- TSG11-2020 鍋爐安全技術(shù)規(guī)程
- 汽輪機(jī)盤車課件
- 異地就醫(yī)備案?jìng)€(gè)人承諾書
- 蘇教版五年級(jí)數(shù)學(xué)下冊(cè)解方程五種類型50題
評(píng)論
0/150
提交評(píng)論