javaIo
直接在源代碼中f4 或者 Ctrl + t 查看繼承結(jié)構(gòu)
1. JavaIO類。
文件:
File、RandomAccessFile
流:
字節(jié)流:InputStream、outputStream ;字符流:Reader、 Writer;(如下圖)
java IO類
2. 總的類
字節(jié)流和字符流:
字節(jié)流和字符流
裝飾器:給流加上特性,比如緩存什么的
適配器:將字節(jié)流轉(zhuǎn)換為字符流
3. 詳解
輸入裝飾流
FilterInputStream是裝飾流;是BufferedInputStream和DataInputStream的超類。
DataInputStream 是數(shù)據(jù)輸入流。它是用來裝飾其它輸入流,它“允許應(yīng)用程序以與機(jī)器無關(guān)方式從底層輸入流中讀取基本 Java 數(shù)據(jù)類型”。
BufferedInputStream 是緩沖輸入流。它的作用是為另一個輸入流添加緩沖功能。
輸出裝飾流
FilterOutputStream 是過濾輸出流。它是DataOutputStream,BufferedOutputStream和PrintStream的超類。
DataOutputStream 是數(shù)據(jù)輸出流。它是用來裝飾其它輸出流,它“允許應(yīng)用程序以與機(jī)器無關(guān)方式向底層寫入基本 Java 數(shù)據(jù)類型”。
BufferedOutputStream 是緩沖輸出流。它的作用是為另一個輸出流添加緩沖功能。
PrintStream (裝飾流)是打印輸出流。它是用來裝飾其它輸出流,能為其他輸出流添加了功能,使它們能夠方便地打印各種數(shù)據(jù)值表示形式。
字符流
輸入適配流
字節(jié)轉(zhuǎn)字符
BufferedReader 是字符緩沖輸入流。它的作用是為另一個輸入流添加緩沖功能。
InputStreamReader 是字節(jié)轉(zhuǎn)字符的輸入流。它是字節(jié)流通向字符流的橋梁:它使用指定的 charset 讀取字節(jié)并將其解碼為字符。
輸出適配流
BufferedWriter 是字符緩沖輸出流。它的作用是為另一個輸出流添加緩沖功能。
OutputStreamWriter 是字節(jié)轉(zhuǎn)字符的輸出流。它是字節(jié)流通向字符流的橋梁:它使用指定的 charset 將字節(jié)轉(zhuǎn)換為字符并寫入。
FileWriter 是字符類型的文件輸出流。它通常用于對文件進(jìn)行讀取操作。
PrintWriter (裝飾流)是字符類型的打印輸出流。它是用來裝飾其它輸出流,能為其他輸出流添加了功能,使它們能夠方便地打印各種數(shù)據(jù)值表示形式。
4.對應(yīng)關(guān)系
字節(jié)流(輸入和輸出對應(yīng)的關(guān)系)
字節(jié)流輸入和輸出對應(yīng)關(guān)系
字符流(輸入和輸出對應(yīng)的關(guān)系)
5【字符流和字節(jié)流之間的關(guān)系】
流程
通過三個明確來完成。
1,明確源和目的。
源:輸入流。InputStream Reader
目的:輸出流。OutputStream Writer。
2,操作的數(shù)據(jù)是否是純文本。
是:字符流。 不是:字節(jié)流。
3,當(dāng)體系明確后,在明確要使用哪個具體的對象。
通過設(shè)備來進(jìn)行區(qū)分:
源設(shè)備:內(nèi)存,硬盤。鍵盤
目的設(shè)備:內(nèi)存,硬盤,控制臺。
分析過程示例:
將一個文本文件中數(shù)據(jù)存儲到另一個文件中。復(fù)制文件。
源:因為是源,所以使用讀取流。InputStream Reader
是不是操作文本文件。
是!這時就可以選擇Reader
這樣體系就明確了。
接下來明確要使用該體系中的哪個對象。
明確設(shè)備:硬盤。上一個文件。
Reader體系中可以操作文件的對象是 FileReader
是否需要提高效率:是!。加入Reader體系中緩沖區(qū) BufferedReader.
FileReader fr = new FileReader("a.txt");
BufferedReader bufr = new BufferedReader(fr);
目的:OutputStream Writer
是否是純文本。
是!Writer。
設(shè)備:硬盤,一個文件。
Writer體系中可以操作文件的對象FileWriter。
是否需要提高效率:是!。加入Writer體系中緩沖區(qū) BufferedWriter
FileWriter fw = new FileWriter("b.txt");
BufferedWriter bufw = new BufferedWriter(fw);
參考來源:
http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html
http://www.cnblogs.com/skywang12345/p/io_01.html
http://www.cnblogs.com/runwind/p/4212178.html
總結(jié)
- 上一篇: 手机防水不容忽视手机防水不容忽视怎么办
- 下一篇: 居家办公不再搬电脑不想搬办公室