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

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論