版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java 輸入輸出流,Java I/0 系統(tǒng),Java 輸入輸出流,本章學(xué)習(xí)提示,本章我們主要學(xué)習(xí)Java語(yǔ)言的輸入輸出處理的機(jī)制 基本流的使用 字符流的使用 字節(jié)流的使用 文 件的訪問,Java 輸入輸出流,目 錄,Java 輸入輸出流,常用軟件,Java 輸入輸出流,輸入輸出類庫(kù),輸入和輸出是程序與用戶之間溝通的橋梁,程序與用戶進(jìn)行信息交互的重要手段。Java 提供專用于輸入輸出功能的包java.io ,其中包含5個(gè)非常重要的類,所有與輸入輸出有關(guān)的類都繼承了這5個(gè)類。 基本流 System.outSystem.in 字符流 Reader Writer 字節(jié)流 InputStream Ou
2、tputStream 文件流 FileInputStream FileOutputStream 過濾流 FilterInputStream FilterOutputStream Java的輸入輸出是以流(stream)的方式進(jìn)行處理的。流是在計(jì)算機(jī)的 輸入、輸出操作中流動(dòng)的數(shù)據(jù)序列。Java 按流的單位分有位流(字節(jié)流)和字符流;按流動(dòng)方向分為輸入流和輸出流。按照功能不同可以分為節(jié)點(diǎn)流和處理流,Java 輸入輸出流,節(jié)點(diǎn)流和處理流,節(jié)點(diǎn)流為可以從一個(gè)特定的數(shù)據(jù)源(節(jié)點(diǎn))讀寫數(shù)據(jù)(如:文件,內(nèi)存)功能:連接數(shù)據(jù)源,數(shù)據(jù)源,程序,處理流是“連接”在已存在的流(節(jié)點(diǎn)流或處理流)之上,通過對(duì)數(shù)據(jù)的處理
3、為程序提供更為強(qiáng)大的讀寫功能。功能:數(shù)據(jù)處理,節(jié)點(diǎn)流,數(shù)據(jù)源,數(shù)據(jù)源,程序,程序,Java 輸入輸出流,輸入流示意圖,輸出流示意圖,可以從輸入流讀取數(shù)據(jù)不能寫數(shù)據(jù),可以從輸出流寫數(shù)據(jù)不能讀取數(shù)據(jù),Java 輸入輸出流,I/O流的分類,按所讀寫的數(shù)據(jù)類型分兩類: 字符流類(Character Streams) 字符流類用于向字符流讀寫16位二進(jìn)制字符。 字節(jié)流類(Byte Streams) 字節(jié)流類用于向字節(jié)流讀寫8位二進(jìn)制的字節(jié)。一般地,字節(jié)流類主要用于讀寫諸如圖象或聲音等的二進(jìn)制數(shù)據(jù)。,Java 輸入輸出流,目 錄,Java 輸入輸出流,基本流,為了減少程序開發(fā)人員,因頻繁應(yīng)用標(biāo)準(zhǔn)的輸入輸出
4、設(shè)備,需要頻繁地建立輸入輸出流對(duì)象的工作量,java系統(tǒng)預(yù)先定義好3個(gè)流對(duì)象,分別表示標(biāo)準(zhǔn)輸出設(shè)備、標(biāo)準(zhǔn)輸入設(shè)備和標(biāo)準(zhǔn)錯(cuò)誤設(shè)備。他們分別是: System.in :用于程序的輸入; 對(duì)應(yīng)外設(shè)為鍵盤 System.out:用于一般輸出; 對(duì)應(yīng)外設(shè)為屏幕 System.err:用于顯示出錯(cuò)信息; 對(duì)應(yīng)外設(shè)為屏幕 System 類的所有屬性都是靜態(tài)static的,調(diào)用時(shí)以類名System為前綴。上述3個(gè)流對(duì)象均為靜態(tài)屬性。,Java 輸入輸出流,基本I/O之例,/從鍵盤輸入字符,然后在屏幕上顯示輸入結(jié)果 import java.io.*; public class standardIO public
5、 static void main(String args) throws IOException /IO操作必須捕獲IO異常 char c; System.out.println(輸入任一字符 ); c=(char)System.in.read(); System.out.println(輸入的字符是 :+c); ,Java 輸入輸出流,基本IO之例,/基本IO standardIO2.java,從命令行讀入字符串,并處理和顯示 import java.io.*; public class standardIO public static void main(String args) thr
6、ows IOException /IO操作必須捕獲IO異常 /先使用System.in構(gòu)造InputStreamReader,再構(gòu)造BufferedReader。 InputStreamReader iin = new InputStreamReader(System.in); BufferedReader stdin=new BufferedReader(iin); /讀取并輸出字符串。 System.out.print(Enter a string: ); System.out.println(stdin.readLine(); /讀取字符串并轉(zhuǎn)換成double類型數(shù)據(jù)輸出 System.
7、out.print(Enter a double: ); /將字符串解析為帶符號(hào)的double類型數(shù)據(jù)。 double number2=Double.parseDouble(stdin.readLine(); System.out.println(number2); ,Java 輸入輸出流,目 錄,Java 輸入輸出流,Unicode字符流I/O類層次關(guān)系圖,Java 輸入輸出流,Reader類,用來以字符方式從流中讀入數(shù)據(jù)。 Reader類中包含了一套所有字符輸入流都需要的方法,可以完成最基本的從字符輸入流讀取數(shù)據(jù)的功能。 Reader是一個(gè)抽象類,所以實(shí)際應(yīng)用中創(chuàng)建的對(duì)象是Reader 某
8、個(gè)子類的對(duì)象,通過該子類對(duì)象與外接數(shù)據(jù)源連接。 子類必須實(shí)現(xiàn)的方法只有 int read(char b, int offset, int length) void close() 當(dāng)輸入流使用完畢后,可以調(diào)用該方法將其關(guān)閉,斷開java程序與外設(shè)數(shù)據(jù)源的聯(lián)系,釋放此連接所占用的系統(tǒng)資源,Java 輸入輸出流,Reader常用子類,BufferedReader 從字符輸入流中讀取文本,緩沖各個(gè)字符,從而實(shí)現(xiàn)字符、數(shù)組和行的高效讀取 可以指定緩沖區(qū)的大小 InputStreamReader 字節(jié)流通向字符流的橋梁:它使用指定的 charset 讀取字節(jié)并將其解碼為字符。 每次調(diào)用 InputStr
9、eamReader 的read() 方法都會(huì)導(dǎo)致從底層輸入流讀取一個(gè)或多個(gè)字節(jié)。 FileReader 用來讀取字符文件的類 用于讀取字符流,詳細(xì)內(nèi)容見 軟件包 java.io 的Reader類,Java 輸入輸出流,Writer類,用來以字符方式向輸出流中寫入數(shù)據(jù)。Writer類中包含了一套所有字符輸出流都需要的方法,可以完成最基本的向字符輸出流寫入數(shù)據(jù)的功能。 Writer是一個(gè)抽象類,所以實(shí)際應(yīng)用中創(chuàng)建的對(duì)象是Writer 某個(gè)子類的對(duì)象,通過該子類對(duì)象與外接數(shù)據(jù)源連接。 子類必須實(shí)現(xiàn)的方法僅有 void write(char b, int offset, int length) voi
10、d close() void flush() /強(qiáng)制清空緩沖區(qū) 當(dāng)輸入流使用完畢后,關(guān)閉輸出流,斷開java程序與外設(shè)數(shù)據(jù)源的連接,釋放所占有的系統(tǒng)資源,Java 輸入輸出流,Writer常用子類,BufferedWriter 將文本寫入字符輸出流,緩沖各個(gè)字符 可以指定緩沖區(qū)的大小 OutputStreamWriter 字符流通向字節(jié)流的橋梁:可使用指定的 charset 將要寫入流中的字符編碼成字節(jié) 每次調(diào)用 write() 方法都會(huì)導(dǎo)致在給定字符(或字符集)上調(diào)用編碼轉(zhuǎn)換器 FileWriter 用來寫入字符文件的類 文件是否可用或是否可以被創(chuàng)建取決于底層平臺(tái) PrintWriter 向
11、文本輸出流打印對(duì)象的格式化表示形式,詳細(xì)內(nèi)容見 軟件包 java.io 的Writer類,Java 輸入輸出流,字符流之例,/輸入字符串、浮點(diǎn)數(shù)、整數(shù)在屏幕上顯示輸入結(jié)果 import java.io.*; public class standardIO3 public static void main(String args) throws IOException InputStreamReader iin=new InputStreamReader(System.in); BufferedReader bin=new BufferedReader(iin); String s; float
12、 f; int i=0; System.out.println(輸入任一字符串); s=bin.readLine(); System.out.println(輸入浮點(diǎn)數(shù)); f=Float.parseFloat(bin.readLine(); System.out.println(輸入整數(shù)); i=Integer.parseInt(bin.readLine(); System.out.println(輸入的字符串:+s); System.out.println(輸入的浮點(diǎn)數(shù):+f); System.out.println(輸入的整數(shù):+i); ,Java 輸入輸出流,目 錄,Java 輸入輸出
13、流,字節(jié)流,輸入流類InputStream和輸出流OutputStream是兩個(gè)最基本的輸入輸出抽象類,用于處理字節(jié)流。 InputStream類 類中包含了一套所有輸入流都需要的方法,可以完成最基本的從輸入流讀取數(shù)據(jù)的功能。 當(dāng)java程序需要從外設(shè)中讀入數(shù)據(jù)時(shí),先創(chuàng)建一個(gè)適當(dāng)類型的輸入流類對(duì)象來完成與外設(shè)的連接,然后再調(diào)用執(zhí)行該新建對(duì)象的特定方法,實(shí)現(xiàn)對(duì)相應(yīng)外設(shè)的操作。 每次執(zhí)行時(shí)都從輸入流的當(dāng)前位置處讀入一個(gè)字節(jié)的二進(jìn)制數(shù)據(jù),次數(shù)作為低字節(jié),高字節(jié)配全零,合成為一個(gè)16位整型量返回,若輸入流當(dāng)前位置無(wú)數(shù)據(jù)返回-1。,Java 輸入輸出流,字節(jié)流I/O類層次關(guān)系圖,Java 輸入輸出流,O
14、utputStream類,類中包含所有輸出流都要使用的方法。當(dāng)java程序需要向某外設(shè)輸出數(shù)據(jù)時(shí),先要?jiǎng)?chuàng)建一個(gè)輸出流類對(duì)象,通過該對(duì)象實(shí)現(xiàn)與外設(shè)的連接,再利用OutputStream類提供的方法將數(shù)據(jù)寫入該外設(shè)中。 OutputStream類是一個(gè)抽象類,不能直接創(chuàng)建OutputStream類對(duì)象,而應(yīng)該創(chuàng)建它的某個(gè)子類的對(duì)象。子類繼承的方法有: Write()方法、flush()方法和close()方法 public void write(int c); 將參數(shù)c對(duì)應(yīng)的字符寫入輸出流 public void write(char array); 將字符數(shù)組array中全部字符順序?qū)懭氲捷敵隽?/p>
15、 使用完畢后,應(yīng)用close()方法關(guān)閉流,Java 輸入輸出流,OutputStream類的常用子類,ByteArrayOutputStream此類實(shí)現(xiàn)了一個(gè)輸出流,數(shù)據(jù)被寫入一個(gè) byte 數(shù)組 FileOutputStream用于將諸如圖像數(shù)據(jù)之類的原始字節(jié)的數(shù)據(jù)流寫入 File ObjectOutputStream 實(shí)現(xiàn)對(duì)象的持久存儲(chǔ),將 Java 對(duì)象的基本數(shù)據(jù)類型和圖形寫入 OutputStream PipedOutputStream 將管道輸出流連接到管道輸入流來創(chuàng)建通信管道,詳細(xì)內(nèi)容見 軟件包 java.io 的OutputStream類,Java 輸入輸出流,InputStr
16、eam類的常用子類,類中包含了一套所有輸入流都需要的方法,可以完成最基本的從輸入流讀取數(shù)據(jù)的功能。 當(dāng)java程序需要從外設(shè)中讀入數(shù)據(jù)時(shí),先創(chuàng)建一個(gè)適當(dāng)類型的輸入流類對(duì)象來完成與外設(shè)的連接,然后再調(diào)用執(zhí)行該新建對(duì)象的特定方法,實(shí)現(xiàn)對(duì)相應(yīng)外設(shè)的操作。 InputStream 子類對(duì)象繼承InputStream 類的如下方法 read()方法、定位指針的方法、close()方法。 public int read() 每次執(zhí)行時(shí)都從輸入流的當(dāng)前位置處讀入一個(gè)字節(jié)的二進(jìn)制數(shù)據(jù),讀數(shù)作為低字節(jié),高字節(jié)配全零,合成為一個(gè)16位整型量返回,若輸入流當(dāng)前位置無(wú)數(shù)據(jù)返回-1。 使用完畢后,應(yīng)用close()方法
17、關(guān)閉流,Java 輸入輸出流,InputStream 類的常用子類,ByteArrayInputStream此類實(shí)現(xiàn)了一個(gè)輸出流,從一個(gè) byte 數(shù)組中讀出數(shù)據(jù) FileInputStream用于從文件File中將諸如圖像數(shù)據(jù)之類的原始字節(jié)的數(shù)據(jù)流讀出 ObjectInputStream 實(shí)現(xiàn)對(duì)象的持久存儲(chǔ),從 OutputStream讀入Java 對(duì)象的基本數(shù)據(jù)類型和圖形,詳細(xì)內(nèi)容見 軟件包 java.io 的InputStream類,Java 輸入輸出流,目 錄,Java 輸入輸出流,文件處理,在程序中要對(duì)磁盤文件或目錄進(jìn)行操作,首先要對(duì)文件或目錄建立連接,為此java提供了file類。
18、 File類位于java.io包中,但不是流類,它不負(fù)責(zé)輸入或輸出,而專門用來管理磁盤文件和目錄。 類的構(gòu)造方法 1、File(Stringpathname) 通過將給定路徑名字符串轉(zhuǎn)換成抽象路徑名來創(chuàng)建一個(gè)新 File 實(shí)例。參數(shù)pathname包含文件名和目錄的字符串,沒有文件名,則代表目錄。(轉(zhuǎn)義字符或/) File file1=new File(“D:javabjmyinput”);/目錄 File file1=new File(“D:javabjmyinputmysys.java”);,Java 輸入輸出流,以上最好使用相對(duì)路徑,2、File(String parent, Strin
19、gchild) 根據(jù) parent 抽象路徑名和 child 路徑名字符串創(chuàng)建一個(gè)新 File 實(shí)例。 parent指目錄或文件所在路徑, child指目錄或文件 File file1=new File(“D:javabj”,”myinput”); File file2=new File(“D:javabjmyinput”,”mysys.java”); 3、File(File parent, Stringchild) 根據(jù) parent 路徑名字符串和 child 路徑名字符串創(chuàng)建一個(gè)新 File 實(shí)例。 Parent是已經(jīng)創(chuàng)建的文件或目錄 File file1=new File(“D:jav
20、abjmyinput”); File file2=new File(file1,”mysys.java”);,Java 輸入輸出流,文件操作類常用方法,參看技術(shù)文檔 例7-1,Java 輸入輸出流,文件輸入與輸出,完成文件的讀寫必須用: FileInputStream/文件輸入流 FileoutputStream/文件輸出流 FileInputStream類 兩個(gè)最常用的構(gòu)造方法: FileInputStream(File fileobj)通過打開一個(gè)到實(shí)際文件的連接來創(chuàng)建一個(gè) FileInputStream,該文件通過文件系統(tǒng)中的 File 對(duì)象 fileobj指定。 FileInputSt
21、ream(String filepath)通過打開一個(gè)到實(shí)際文件的連接來創(chuàng)建一個(gè) FileInputStream,該文件通過文件系統(tǒng)中的路徑名 filepath 指定。,Java 輸入輸出流,FileInputStream f1=new FileInputStream(“c:abj.java”) File f=new file(“c:abj.java”) FileInputStream f1=new FileInputStream(f),Java 輸入輸出流,FileOutputStream 類,兩個(gè)最常用的構(gòu)造方法: FileOutputStream(Filefile) 創(chuàng)建一個(gè)向指定 Fi
22、le 對(duì)象表示的文件中寫入數(shù)據(jù)的文件輸出流。 FileOutputStream(Stringname) 創(chuàng)建一個(gè)向具有指定名稱的文件中寫入數(shù)據(jù)的輸出文件流。 例7-3 p143 例7-4 p144,Java 輸入輸出流,對(duì)文件基本數(shù)據(jù)類型的操作,java中除了二進(jìn)制文件和使用文本文件外還有基于data的數(shù)據(jù)操作,這里的data指的是java的基本數(shù)據(jù)類型和string?;緮?shù)據(jù)類型包括byte、int、char、long、float、double、boolean和short。 datainputstream和dataoutputstream。 它們提供了對(duì)java基本數(shù)據(jù)類型的操作,但是這些方
23、法事實(shí)上是在兩個(gè)重要的接口中定義的datainput和dataoutput,它們的功能就是把二進(jìn)制的字節(jié)流轉(zhuǎn)換成java的基本數(shù)據(jù)類型,同時(shí)還提供了從數(shù)據(jù)中使用utf-8編碼構(gòu)建string的功能。,Java 輸入輸出流,在datainputstream和dataoutputstream兩個(gè)類中的方法都很簡(jiǎn)單,基本結(jié)構(gòu)為readxxxx()和writexxxx()其中xxxx代表基本數(shù)據(jù)類型或者string。,Java 輸入輸出流,Datainputstream的方法,booleanreadBoolean() 參見 DataInput 的 readBoolean 方法的常規(guī)協(xié)定。 bytere
24、adByte() 參見 DataInput 的 readByte 方法的常規(guī)協(xié)定。 charreadChar() 參見 DataInput 的 readChar 方法的常規(guī)協(xié)定。 doublereadDouble() 參見 DataInput 的 readDouble 方法的常規(guī)協(xié)定。 floatreadFloat() 參見 DataInput 的 readFloat 方法的常規(guī)協(xié)定。,Java 輸入輸出流,intreadInt() 參見 DataInput 的 readInt 方法的常規(guī)協(xié)定。 longreadLong() 參見 DataInput 的 readLong 方法的常規(guī)協(xié)定。 shortreadShort() 參見 DataInput 的 readShort 方法的常規(guī)協(xié)定。 StringreadUTF() 參見 DataInput 的 readUTF 方法的常規(guī)協(xié)定。,Java 輸入輸出流,Datao
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老機(jī)構(gòu)安全用電培訓(xùn)課件
- 春節(jié)安全培訓(xùn)感想課件
- 醫(yī)院管理制度大全之處方、病歷書寫規(guī)范
- 校園安全隱患教育課件
- 食品安全知識(shí)學(xué)生課件
- 立秋節(jié)氣:文化與共享
- 校園安全設(shè)施培訓(xùn)總結(jié)課件
- 春節(jié)前客運(yùn)安全培訓(xùn)課件
- 大體積砼施工安全課件
- 汽車調(diào)試員講安全課件
- 企業(yè)社會(huì)責(zé)任實(shí)踐與品牌建設(shè)策略
- 安全技術(shù)與管理畢業(yè)論文
- 溫嶺市恩力天金屬表面處理有限公司年處理10萬(wàn)噸磷化金屬表面技改項(xiàng)目環(huán)評(píng)報(bào)告
- 職務(wù)侵占罪法律培訓(xùn)
- 【2025版】人教版(PEP)三年級(jí)下冊(cè)英語(yǔ)教學(xué)工作計(jì)劃(及進(jìn)度表)
- JJF 1183-2025 溫度變送器校準(zhǔn)規(guī)范
- 2024“五史”全文課件
- 人教版七年級(jí)數(shù)學(xué)上冊(cè)期末試題及參考答案(偏難)
- 關(guān)節(jié)攣縮的治療及預(yù)防
- 2024能源企業(yè)可持續(xù)發(fā)展(ESG)披露指標(biāo)體系和評(píng)價(jià)導(dǎo)則
- 鉆孔灌注樁鋼筋籠吊裝方案(改動(dòng))
評(píng)論
0/150
提交評(píng)論