【JAVA IO】_位元組-字元轉換流筆記
本章目標:
掌握OutputStreamWriter和InputStreamReader類的作用
OutputStreamWriter和IntputStreamReader
正式因為有OutputStreamWriter和InputStreamReader才使InputStream、OutputStream與Reader、Writer建立關係。
所以本章要比上一章更重要。
在整個IO包中,實際上就是位元組流和字元流,但是除了這兩個流之外,還存在了一組位元組流-字元流的轉換類。
OutputStreamWriter:是Writer的子類,將輸出的字元流變為位元組流,即:將一個字元流的輸出對象變為位元組流的輸出對象。
InputStreamReader: 是Reader的子類,將輸入的位元組流變為字元流,即:將一個位元組流的輸入對象變為字元流的輸入對象。
一般在操作輸入輸出內容的時候就需要使用位元組或字元流,但是有些時候需要將字元流變為位元組流的形式,或者將位元組變為字元流的形式,所以,就需要另外一群組轉換流的操作類。
轉換步驟:
如果以檔案操作為例,則在記憶體中的字元資料需要通過OutputStreamWriter變為位元組流才能儲存在檔案之中,讀取的時候需要將讀入的位元組流通過InputStreamReader變為字元流。
在OutputStreamWriter類中需要一個位元組流的對象:
public OutputStreamWriter(OutputStream out)
例如:將位元組的檔案輸出資料流,以字元的形式輸出。
import java.io.*;public class OutputStreamWriterdemo01{ public static void main(String args[])throws Exception{ File f = new File("d:"+File.separator+"test.txt"); Writer out = null; out = new OutputStreamWriter(new FileOutputStream(f)); out.write("hello world!!!"); out.close(); }}
讀的時候,也可以使用字元流的形式讀取位元組流的檔案。
import java.io.*;public class InputStreamReaderDemo01{ public static void main(String args[])throws Exception{ File f = new File("d:"+File.separator+"test.txt"); Reader reader = null; reader = new InputStreamReader(new FileInputStream(f)); char c[] = new char[1024]; int len = reader.read(c); System.out.println(new String(c,0,len)); }}
但是,以上只是以檔案操作為例,因為OutputStreamWriter 中接收的類型是OutputStream,只要是位元組輸出資料流都可以使用字元的形式操作,而InputStreamReader()中接收的類型是InputStream,只要是位元組的輸入資料流都可以使用字元的輸入資料流操作。
位元組流字元流的類別關係整理:
java.lang.Object
java.io.Writer
java.io.OutputStreamWriter
java.io.FileWriter
java.lang.Object
java.io.Reader
java.io.InputStreamReader
java.io.FileReader