




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第八章 流1Java流式輸入/輸出原理2Java流類的分類3輸入,輸出流類4常見的節(jié)點(diǎn)流(常見:文件流,分為:字符,字節(jié)流/輸入,輸出流)和處理流(常見:緩沖流,分為)4.1文件流4.2緩沖流5 數(shù)據(jù)流6 轉(zhuǎn)換流7 Print流8 Object流2010年3月31日星期三, 19:54:28 2010年4月2日 星期五20:00:271. java流式輸入輸出流原理 文件(桶) - 流(管道) - 程序2. java輸入輸出流分類 (輸入輸出相對(duì)于程序來說的,而不是文件)Java.io包中定義了多個(gè)流類型(類或者抽象類)來實(shí)現(xiàn)輸入/輸出功能:可以不按數(shù)據(jù)流的方向不同分為輸入流和輸出流按處理數(shù)據(jù)
2、單位不同分為字節(jié)流和字符流按功能不同分為節(jié)點(diǎn)流和處理流J2SDK所提供的所有流類型位于包Java,io內(nèi)都分別繼承自以下四中抽象流類型。字節(jié)流(Stream)字符流(兩個(gè)字節(jié))輸入流InputStreamReader輸出流OutputStreamWriter3. 輸入/輸出流類4個(gè)1 InputStream 繼承自InputStream的流都是用于向程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字節(jié)(8bit),下圖深色為節(jié)點(diǎn)流,淺色為處理流InputStream的基本方法2 OutputStream 繼承自outputStream的流都是用于程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字節(jié)(8bit),下圖深色為節(jié)點(diǎn)流,
3、淺色為處理流OutputStream的基本方法3 Reader 繼承自Reader的流都是用于向程序輸入數(shù)據(jù),且數(shù)據(jù)的單位為字節(jié)(16bit),下圖深色為節(jié)點(diǎn)流,淺色為處理流Reader的基本用法4 Writer 繼承自Writer的流都是用于程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字節(jié)(16bit),下圖深色為節(jié)點(diǎn)流,淺色為處理流writer的基本用法4. 常見節(jié)點(diǎn)流/處理流4.1 節(jié)點(diǎn)流類型(直接讀取寫入.不經(jīng)過處理)4.1.1 常見節(jié)點(diǎn)流:文件流例子:IO TestFileInputStream.java 字節(jié)流按一個(gè)字節(jié)一個(gè)字節(jié)讀取文件import java.io.*;public class
4、TestFileInputStream public static void main(String args) int b = 0; FileInputStream in = null; try in = new FileInputStream(F:My WorkspaceJavaIOTestFileInputStream.java); catch (FileNotFoundException e) System.out.println(找不到指定文件); System.exit(-1); try /讀數(shù)據(jù) long num = 0; while(b=in.read()!=-1)/讀一個(gè)字節(jié)
5、到變量b,b=-1表示讀取完成 System.out.print(char)b); num+;/計(jì)數(shù) in.close(); System.out.println(); System.out.println(共讀取了 +num+ 個(gè)字節(jié)); catch (IOException e1) System.out.println(文件讀取錯(cuò)誤); System.exit(-1); IOTestFileOutputStream.java 字節(jié)流復(fù)制文件import java.io.*;public class TestFileOutputStream public static void main(S
6、tring args) int b = 0; FileInputStream in = null; /聲明in為文件輸入流(管道) FileOutputStream out = null;/聲明out為文件輸流(管道) try in = new FileInputStream(F:/My Workspace/Java/IO/TestFileOutputStream.java); out = new FileOutputStream(F:/My Workspace/Java/IO/copy TestFileOutputStream.java); while(b=in.read()!=-1) ou
7、t.write(b); in.close(); out.close(); catch (FileNotFoundException e2) System.out.println(找不到指定文件); System.exit(-1); catch (IOException e1) System.out.println(文件復(fù)制錯(cuò)誤); System.exit(-1); System.out.println(文件已復(fù)制); IOTestFileReader.java 字符流按一個(gè)字符一個(gè)讀取文件import java.io.*;public class TestFileReader public s
8、tatic void main(String args) FileReader fr = null; int c = 0; try fr = new FileReader(d:sharejavaioTestFileReader.java); int ln = 0; while (c = fr.read() != -1) /char ch = (char) fr.read(); System.out.print(char)c); /if (+ln = 100) System.out.println(); ln = 0; fr.close(); catch (FileNotFoundExcepti
9、on e) System.out.println(找不到指定文件); catch (IOException e) System.out.println(文件讀取錯(cuò)誤); IO TestFileWriter.java 字符流輸出大多國(guó)家的數(shù)文字import java.io.*;public class TestFileWriter public static void main(String args) FileWriter fw = null; try fw = new FileWriter(F:My WorkspaceJavaIOunicode.txt); for(int c=0;c=500
10、00;c+) fw.write(c); fw.close(); catch (IOException e1) e1.printStackTrace(); System.out.println(文件寫入錯(cuò)誤); System.exit(-1); IOTestFileWriter2.java 字符流復(fù)制文件 并且每個(gè)字符后面多輸出一個(gè)“|”字符import java.io.*;public class TestFileWriter2 public static void main(String args) int b = 0; FileReader fn = null; FileWriter fw
11、 = null; try fn = new FileReader(F:My WorkspaceJavaIOTestFileWriter2.java); fw = new FileWriter(F:My WorkspaceJavaIOcopy TestFileWriter2.txt); while(b = fn.read()!=-1)fw.write(“|”); fw.write(b); fn.close(); fw.close(); catch (IOException e1) e1.printStackTrace(); System.out.println(文件寫入錯(cuò)誤); System.e
12、xit(-1); 4.2 處理流( 經(jīng)過處理的流)常見處理流:緩沖流IO TestBufferStream1.javaimport java.io.*;public class TestBufferStream1 public static void main(String args) try FileInputStream fis = new FileInputStream(F:My WorkspaceJavaIOTestBufferStream1.java); BufferedInputStream bis = new BufferedInputStream(fis); int c = 0
13、; System.out.println(bis.read(); System.out.println(bis.read();bis bis.mark(100); /從100號(hào)往外讀Fis for(int i=0;i=10 & (c=bis.read()!=-1;i+) System.out.print(char)c+ ); System.out.println(); bis.reset();/回到標(biāo)記點(diǎn) for(int i=0;i=10 & (c=bis.read()!=-1;i+) System.out.print(char)c+ ); bis.close(); catch (IOExce
14、ption e) e.printStackTrace(); IO/TestBufferStream2.java 帶緩沖區(qū)的輸入輸出流(能讀一行)import java.io.*;public class TestBufferStream2 public static void main(String args) try BufferedWriter bw = new BufferedWriter(new FileWriter(d:sharejavadat2.txt); BufferedReader br = new BufferedReader( new FileReader(d:sharej
15、avadat2.txt); String s = null; for(int i=1;i=100;i+) s = String.valueOf(Math.random(); bw.write(s); bw.newLine(); bw.flush();/全部取出緩沖區(qū)數(shù)據(jù) while(s=br.readLine()!=null)/讀一行 System.out.println(s); bw.close(); br.close(); catch (IOException e) e.printStackTrace(); 5. 轉(zhuǎn)換流InputStreamReader和OutputStreamWrite
16、r用于與字節(jié)數(shù)據(jù)到字符數(shù)據(jù)之間轉(zhuǎn)換。InputStreamReader需和InputStream“套接”。InputStream轉(zhuǎn)換成ReaderOutputStreamWriter需和OutputStream“套接”。OutputStream轉(zhuǎn)換成Writer轉(zhuǎn)換流在構(gòu)造時(shí)可以指定起編碼集合,例如InputStream isr = new InputStreamReader ( System.in, “ISO08859_1”)例子IOTestTransForm1.javaIOTestTransForm2.javaimport java.io.*;public class TestTransF
17、orm2 public static void main(String args) InputStreamReader isr = new InputStreamReader(System.in);/接受鍵盤輸入 BufferedReader br = new BufferedReader(isr);brisr String s = null; try s = br.readLine();/讀一行 while(s!=null) if(s.equalsIgnoreCase(exit) break; System.out.println(s.toUpperCase(); s = br.readLi
18、ne(); br.close(); catch (IOException e) e.printStackTrace(); /阻塞6. 數(shù)據(jù)流 DataInputStream 和DataOutputStream分別繼承自InputStream和OutputStream,它屬于處理流,需要分別“套接”在InputStream和OutputStream類型的節(jié)點(diǎn)流上。DataInputStream和DataOutputStream踢狗了可以存取與機(jī)器無關(guān)的Java原始類型數(shù)據(jù)(如:int,double等)的方法DataInputStream和DataOutputStream的構(gòu)造方法:DataInp
19、utStream( InputStream in)DataOutputStream( OutputStream out)例子7. Print流例子1import java.io.*;public class TestPrintStream1 public static void main(String args) PrintStream ps = null; try FileOutputStream fos = new FileOutputStream(d:baklog.dat); ps = new PrintStream(fos); catch (IOException e) e.print
20、StackTrace(); if(ps != null) System.setOut(ps);/設(shè)置輸出窗口. int ln = 0; for(char c = 0; c =100) System.out.println(); ln = 0; 例子3import java.util.*; import java.io.*;public class TestPrintStream3 public static void main(String args) String s = null; BufferedReader br = new BufferedReader( new InputStrea
21、mReader(System.in); try FileWriter fw = new FileWriter (d:baklogfile.log, true); /Log4J PrintWriter log = new PrintWriter(fw); while (s = br.readLine()!=null) if(s.equalsIgnoreCase(exit) break; System.out.println(s.toUpperCase(); log.println(-); log.println(s.toUpperCase(); log.flush(); log.println(=+new Date()+=); log.flush(); log.close(); catch (IOException e) e.printSt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ōu)化辦公流程管理規(guī)章制度
- 2025年巴彥淖爾貨運(yùn)從業(yè)資格證考試卷
- 2025年江蘇貨運(yùn)從業(yè)資格證模擬考試0題b2
- 人力資源企業(yè)勞動(dòng)合同
- 2025年烏海貨運(yùn)資格證考試有哪些項(xiàng)目
- 2025年宜昌貨運(yùn)從業(yè)資格證模擬考試系統(tǒng)下載
- 2025年南京貨運(yùn)從業(yè)資格考試技巧
- 動(dòng)漫游戲創(chuàng)作與制作技術(shù)作業(yè)指導(dǎo)書
- 2025年南昌貨運(yùn)從業(yè)資格證模擬考試題下載
- 2025年部編版語(yǔ)文小學(xué)三年級(jí)下冊(cè)口語(yǔ)與習(xí)作專項(xiàng)復(fù)習(xí)題
- 學(xué)術(shù)論文寫作與規(guī)范課件
- 口腔診所藥品管理制度
- 中醫(yī)子午流注十二時(shí)辰養(yǎng)生法
- 養(yǎng)老院風(fēng)險(xiǎn)管控手冊(cè)
- 標(biāo)準(zhǔn)田字格帶拼音模板空白A4直接打印
- 小學(xué)語(yǔ)文 部編版 六年級(jí)下冊(cè) 第二單元 習(xí)作《寫作品梗概》
- 4.7 數(shù)學(xué)建模活動(dòng):生長(zhǎng)規(guī)律的描述教學(xué)設(shè)計(jì)
- 余杭區(qū)住宅房屋裝修備案申請(qǐng)表
- 住宅建筑工程施工重點(diǎn)與難點(diǎn)應(yīng)對(duì)措施方案
- 中醫(yī)婦科病證診斷療效標(biāo)準(zhǔn)
- 護(hù)士職業(yè)素養(yǎng)課件
評(píng)論
0/150
提交評(píng)論