所謂的轉換流指的是能夠實現字節流與字符流操做的功能轉換,例如:進行輸出的時候OutputStream須要將內容變爲字節數組後才能夠進行輸出,而Writer能夠直接輸出字符串,這一點是方便的,因此不少人就認爲須要提供有一種轉換的機制,來實現不一樣流類型的轉化操做,爲此在java.io包裏面提供有兩個類:InputStreamReader、OutputStreamWriter。java
類數組 |
InputStreamReader:緩存 |
OutputStreamWriter:ide |
定義spa |
public class OutputStreamWriter extends Writer3d |
public class InputStreamReader extends Readercode |
構造方法orm |
public OutputStreamWriter(OutputStream out)對象 |
public InputStreamReader(InputStream in)blog |
經過類的繼承結構與構造方法能夠發現,所謂的轉換處理就是將接收到的字節流對象經過向上轉型變爲字符流對象。
範例:觀察轉換
1 import java.io.File; 2 import java.io.FileOutputStream; 3 import java.io.OutputStream; 4 import java.io.OutputStreamWriter; 5 import java.io.Writer; 6 public class JavaAPIDemo { 7 public static void main(String[] args) throws Exception { 8 File file = new File("D:" + File.separator + "hello" + File.separator + "mldn.txt"); 9 if (!file.getParentFile().exists()) { 10 file.getParentFile().mkdirs(); // 父目錄必須存在 11 } 12 OutputStream output = new FileOutputStream(file) ; 13 Writer out = new OutputStreamWriter(output) ; // 字節流變爲字符流 14 out.write("www.mldn.cn"); // 直接輸出字符串,字符流適合於處理中文 15 out.close(); 16 } 17 }
講解轉換流的主要目的基本上不是爲了讓開發者去記住它,而是知道有這樣一種功能,但同時更多的是須要進行結構的分析處理。經過以前的字節流與字符流的一系列的分析以後你會發現OutputStream類有FileOutputStream直接子類、InputStream類有FileInputStream直接子類,可是來觀察一下FileWriter、FileReader類的繼承關係。
FileWriter |
FileReader |
public class FileWriter extends OutputStreamWriter |
public class FileReader extends InputStreamReader |
實際上所謂的緩存都是指的是程序中間的一道處理緩衝區。