位元組流和字元流的轉換
阿新 • • 發佈:2018-11-30
目標
掌握OutputStreamWrite和InputStreamReader類的作用
OutputStreamWrite和InputStreamReader
一般在操作輸入輸出內容的就需要使用位元組或者字元流,但是有些時候需要將字元流轉換為位元組流的形式,或者位元組流轉換為字元流,所以就需要另一組轉換流的操作類。
轉換步驟
在OutputStreamWrite類需要一個位元組流的物件:public
OutputStreamWrite。
例如,將位元組的檔案輸出流,以字元的形式輸出。
import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.Writer; public class OutputStreamWriteDemo01 { public static void main(String[] args) throws Exception{ File f = new File("d:" + File.separator + "test01.txt"); Writer out = null; //字元輸出流 out = new OutputStreamWriter(new FileOutputStream(f)); out.write("helloword"); //使用字元流輸出 out.close(); }
}
讀的時候,也可以使用字元流的形式讀取位元組流的檔案。
import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.Reader; public class InputStreamReaderDemo01 { public static void main(String[] args) throws Exception{ File f = new File("d:" + File.separator + "test01.txt"); Reader reader = null; reader = new InputStreamReader(new FileInputStream(f)); char c[] = new char[1024]; int len = reader.read(c); //讀取 reader.close(); System.out.println(new String(c,0,len)); }
}
以上只是以檔案操作為例,因為OutputStreamWrite中接收的型別是OutoutStream,只要是位元組數出流都可以使用字元的形式操作,而InputStreamReader()中接收的型別是InputStream類,只要是位元組的輸出流都可以使用字元的輸入流操作。
FileWrite和FileReader的說明
FileWrite不是Write的子類,而是轉換流的子類。
FileReader不是Reader的子類,而是轉換流的子類。
也就是說,最後不管如何,雖然是以字元的輸出流操作了位元組的輸出流,但實際上還是以位元組的形式輸出,而字元的輸入流,雖然是以字元的形式操作,但是還是使用位元組流,也就是說,傳輸或者是從檔案中讀取資料的時候,檔案裡真正儲存的資料永遠是位元組。