1. 程式人生 > >位元組流和字元流的轉換

位元組流和字元流的轉換

目標
掌握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的子類,而是轉換流的子類。
也就是說,最後不管如何,雖然是以字元的輸出流操作了位元組的輸出流,但實際上還是以位元組的形式輸出,而字元的輸入流,雖然是以字元的形式操作,但是還是使用位元組流,也就是說,傳輸或者是從檔案中讀取資料的時候,檔案裡真正儲存的資料永遠是位元組。