版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第八章流1.java 流式輸入輸出流原理 文件(桶) - 流(管道) - 程序2. java 輸入輸出流分類 (輸入輸出相對于程序來說的,而不是文件)Java.io 包中定義了多個(gè)流類型(類或者抽象類)來實(shí)現(xiàn)輸入/輸出功能:可以不按數(shù)據(jù)流的方向不同分為輸入流和輸出流按處理數(shù)據(jù)不同分為字節(jié)流和字符流按功能不同分為節(jié)點(diǎn)流和處理流J2SDK 所提供的所有流類型位于包 Java,io 內(nèi)都分別繼承自以下四中抽象流類型。3. 輸入/輸出流類 4 個(gè)1 InputStream 繼承自 InputStream 的流都是用于向程序中輸入數(shù)據(jù),且數(shù)據(jù)的流,淺色為處理流為字節(jié)(8bit),下圖深色為節(jié)點(diǎn)字節(jié)流(S
2、tream)字符流(兩個(gè)字節(jié))輸入流InputStreamReader輸出流OutputStreamWriter1Java 流式輸入/輸出原理2Java 流類的分類輸入,輸出流類常見的節(jié)點(diǎn)流(常見:文件流,分為:字符,字節(jié)流/輸入,輸出流)和處理流(常見:緩沖流,分為)文件流緩沖流 5 數(shù)據(jù)流 6 轉(zhuǎn)換流 7 Pr流 8 Object 流2010 年 3 月 31 日三, 19:54:28 2010 年 4 月 2 日五 20:00:27InputStream 的基本方法2 OutputStream 繼承自 outputStream 的流都是用于程序中輸入數(shù)據(jù),且數(shù)據(jù)的流,淺色為處理流為字節(jié)(
3、8bit),下圖深色為節(jié)點(diǎn)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 的基本用法常見節(jié)點(diǎn)流/處理流節(jié)點(diǎn)流類型(直接寫入.不經(jīng)過處理)4.1.1 常見節(jié)點(diǎn)流:文件流例子:IO TestFileInputStream.java字節(jié)流按一個(gè)字節(jié)一個(gè)字節(jié)import java.io.*;public class Test
4、FileInputStream public sic void main(String args) b = 0;FileInputStream in = null; try 文件in = new FileInputStream(F:My WorkspaceJavaIOTestFileInputStream.java); catch (FileNotFoundException e) System.out.prln(找不到指定文件); System.exit(-1);try /讀數(shù)據(jù) long num = 0;while(b=in.read()!=-1)/讀一個(gè)字節(jié)到變量 b,b=-1 表示Sy
5、stem.out.pr(char)b); num+;/計(jì)數(shù)in.close(); System.out.prln();System.out.prln(共了 +num+ 個(gè)字節(jié)); catch (IOException e1) 完成System.out.prln(文件錯(cuò)誤); System.exit(-1);IOTestFileOutputStream.java 字節(jié)流import java.io.*;public class TestFileOutputStream public sic void main(String args) b = 0;文件FileInputStream in = n
6、ull; /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)out.write(b);in.close();olose(); catch (FileNotFoun
7、dException e2) System.out.prln(找不到指定文件); System.exit(-1); catch (IOException e1) System.out.prln(文件錯(cuò)誤); System.exit(-1);System.out.prln(文件已);IOTestFileReader.java字符流按一個(gè)字符一個(gè)import java.io.*;public class TestFileReader public sic void main(String args) FileReader fr = null;c = 0;try 文件fr = new FileRea
8、der(d:sharejavaioTestFileReader.java);ln = 0;while (c = fr.read() != -1) /char ch = (char) fr.read(); System.out.pr(char)c);/if (+ln = 100) System.out.prln(); ln = 0;fr.close(); catch (FileNotFoundException e) System.out.prln(找不到指定文件); catch (IOException e) System.out.prln(文件錯(cuò)誤);IO TestFileWriter.ja
9、va字符流輸出大多國家的數(shù)文字import java.io.*;public class TestFileWriter public sic void main(String args) FileWriter fw = null;try fw = new FileWriter(F:My WorkspaceJavaIOunicode.txt);for(c=0;c=50000;c+)fw.write(c);fw.close(); catch (IOException e1) e1.prStackTrace();System.out.prln(文件寫入錯(cuò)誤); System.exit(-1);IOT
10、estFileWriter2.java字符流import java.io.*;public class TestFileWriter2 文件 并且每個(gè)字符后面多輸出一個(gè)“|”字符public sic void main(String args) b = 0;FileReader fn = null; FileWriter fw = null;try fn = new FileReader(F:My WorkspaceJavaIOTestFileWriter2.java);fw = new FileWriter(F:My WorkspaceJavaIOcopy TestFileWriter2.t
11、xt);while(b = fn.read()!=-1)fw.write(“|”); fw.write(b);fn.close();fw.close(); catch (IOException e1) e1.prStackTrace();System.out.prln(文件寫入錯(cuò)誤); System.exit(-1);4.2處理流( 經(jīng)過處理的流)4.2.1 常見處理流:緩沖流IO TestBufferStream1.javaimport java.io.*;public class TestBufferStream1 public sic void main(String args) try
12、 FileInputStream fis =new FileInputStream(F:My WorkspaceJavaIOTestBufferStream1.java); BufferedInputStream bis =new BufferedInputStream(fis);c = 0;System.out.prln(bis.read();System.out.prln(bis.read();bis.mark(100); /從 100 號往外讀for(i=0;i=10 & (c=bis.read()!=-1;i+)bisFisSystem.out.pr(char)c+ );System.
13、out.prln(); bis.reset();/回到標(biāo)記點(diǎn)for(i=0;i=10 & (c=bis.read()!=-1;i+)System.out.pr(char)c+ );bis.close(); catch (IOException e) e.prStackTrace();IO/TestBufferStream2.java 帶緩沖區(qū)的輸入輸出流(能讀一行)import java.io.*;public class TestBufferStream2 public sic void main(String args) try BufferedWriter bw = new Buffer
14、edWriter(new FileWriter(d:sharejavadat2.txt); BufferedReader br = new BufferedReader(new FileReader(d:sharejavadat2.txt);String s = null;for(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.prln(s);bw.close();br.c
15、lose(); catch (IOException e) e.prStackTrace();轉(zhuǎn)換流InputStreamReader 和 OutputStreamWriter 用于與字節(jié)數(shù)據(jù)到字符數(shù)據(jù)之間轉(zhuǎn)換。 InputStreamReader 需和 InputStream“套接”。InputStream 轉(zhuǎn)換成 Reader OutputStreamWriter 需和 OutputStream“套接”。OutputStream 轉(zhuǎn)換成Writer轉(zhuǎn)換流在構(gòu)造時(shí)可以指定起編碼集合,例如5.InputStreamisr=new InputStreamReader ( System.in,“I
16、SO08859_1”)例子 IOTestTransForm1.javaIOTestTransForm2.javaimport java.io.*;public class TestTransForm2 public sic void main(String args) InputStreamReader isr =new InputStreamReader(System.in);/接受鍵盤輸入BufferedReader br = new BufferedReader(isr);String s = null;try s = br.readLine();/讀一行 while(s!=null)i
17、f(s.equalsIgnoreCase(exit) break; System.out.pr ln(s.toUpperCase(); s = br.readLine();br.close(); catch (IOException e) e.prStackTrace();brisr /阻塞6.數(shù)據(jù)流DataInputStream 和 DataOutputStream 分別繼承自 InputStream 和 OutputStream,它屬于處理流,需要分別“套接”在 InputStream 和 OutputStream 類型的節(jié)點(diǎn)流上。DataInputStream 和 DataOutputS
18、tream 踢狗了可以存取與機(jī)器無關(guān)的 Java 原始類型數(shù)據(jù)(如:,double 等)的方法DataInputStream 和 DataOutputStream 的構(gòu)造方法: DataInputStream(InputStream in) DataOutputStream(OutputStream out)例子Pr流7.例子 1import java.io.*;public class TestPrStream1 public sic void main(String args) PrStream ps = null;try FileOutputStream fos =new FileOut
19、putStream(d:baklog.dat); ps = new PrStream(fos); catch (IOException e) e.prStackTrace();if(ps != null)System.setOut(ps);/設(shè)置輸出窗口.ln = 0;for(char c = 0; c =100) System.out.prln(); ln = 0;例子 3import java.util.*; import java.io.*;public class TestPrStream3 public sic void main(String args) String s = nu
20、ll;BufferedReader br = new BufferedReader(new InputStreamReader(System.in);try FileWriter fw = new FileWriter(d:baklogfile.log, true); /Log4J PrWriter log = new PrWriter(fw);while (s = br.readLine()!=null) if(s.equalsIgnoreCase(exit) break; System.out.pr ln(s.toUpperCase(); log.pr ln( );log.pr ln(s.toUpperCase(); log.flush();log.prln(=+new Date()+=); log.flush();log.close(); catch (IOException e) e.prStackTrace();8.Obj
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年合伙市場拓展協(xié)議
- 2025年仲裁裁決合同范本
- 2025年劍術(shù)表演協(xié)議
- 2025年度高端商業(yè)街區(qū)門面店鋪轉(zhuǎn)讓及租賃合作協(xié)議書3篇
- 二零二五版首付款分期購房借款合同樣本3篇
- 2025年度木地板翻新與保養(yǎng)服務(wù)合同4篇
- 2025年新型節(jié)能廚房電器研發(fā)與銷售合作協(xié)議4篇
- 2025年度個(gè)人分紅協(xié)議書包含金融科技分紅條款4篇
- 二零二五年度新型木托盤租賃及信息化管理服務(wù)合同4篇
- 2025年度上市公司合規(guī)管理法律顧問合同
- 湖北省石首楚源“源網(wǎng)荷儲”一體化項(xiàng)目可研報(bào)告
- 醫(yī)療健康大數(shù)據(jù)平臺使用手冊
- 碳排放管理員 (碳排放核查員) 理論知識考核要素細(xì)目表四級
- 撂荒地整改協(xié)議書范本
- 診所負(fù)責(zé)人免責(zé)合同范本
- 2024患者十大安全目標(biāo)
- 會(huì)陰切開傷口裂開的護(hù)理查房
- 實(shí)驗(yàn)報(bào)告·測定雞蛋殼中碳酸鈣的質(zhì)量分?jǐn)?shù)
- 部編版小學(xué)語文五年級下冊集體備課教材分析主講
- 電氣設(shè)備建筑安裝施工圖集
- 《工程結(jié)構(gòu)抗震設(shè)計(jì)》課件 第10章-地下建筑抗震設(shè)計(jì)
評論
0/150
提交評論