馬士兵_j2se第八章流個(gè)人學(xué)習(xí)筆記_第1頁
馬士兵_j2se第八章流個(gè)人學(xué)習(xí)筆記_第2頁
馬士兵_j2se第八章流個(gè)人學(xué)習(xí)筆記_第3頁
馬士兵_j2se第八章流個(gè)人學(xué)習(xí)筆記_第4頁
馬士兵_j2se第八章流個(gè)人學(xué)習(xí)筆記_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論