Java IO編程——轉換流

  • 2019 年 11 月 8 日
  • 筆記

所謂的轉換流指的是可以實現位元組流與字符流操作的功能轉換,例如:進行輸出的時候OutputStream需要將內容變為位元組數組後才可以進行輸出,而Writer可以直接輸出字符串,這一點是方便的,所以很多人就認為需要提供有一種轉換的機制,來實現不同流類型的轉化操作,為此在java.io包裏面提供有兩個類:InputStreamReaderOutputStreamWriter

InputStreamReader

OutputStreamWriter

定義

public class OutputStreamWriter extends Writer

public class InputStreamReader extends Reader

構造方法

public OutputStreamWriter​(OutputStream out)

public InputStreamReader​(InputStream in)

 

 

通過類的繼承結構與構造方法可以發現,所謂的轉換處理就是將接收到的位元組流對象通過向上轉型變為字符流對象。

範例:觀察轉換

 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 }

JavaAPIDemo

 

 

 講解轉換流的主要目的基本上不是為了讓開發者去記住它,而是知道有這樣一種功能,但同時更多的是需要進行結構的分析處理。通過之前的位元組流與字符流的一系列的分析之後你會發現OutputStream類有FileOutputStream直接子類、InputStream類有FileInputStream直接子類,但是來觀察一下FileWriterFileReader類的繼承關係。

 

FileWriter

FileReader

public class FileWriter  extends OutputStreamWriter

public class FileReader extends InputStreamReader

 

實際上所謂的緩存都是指的是程序中間的一道處理緩衝區。