JavaIO編程(字節流與字符流的區別+轉換流)

字節:一種計量單位,表示數據量的多少。(Byte)
字符:數字,字母,漢字和各種符號。(String(字符串)、char(字符))
區別:字節流沒有使用到緩衝區,而字符流使用了; 處理各種數據都可以通過字節流完成,而在處理中文的時候使用字符流會更好。

轉換流:通過InputStreamReader(字節輸入流轉換爲字符輸入流) 、 OutputStreamWriter(字節輸出流轉換爲字符輸出流)兩個類來實現。
它們的繼承關係如下:
java.lang.Object
| - java.io.Writer
| - java.io.OutputStreamWriter
| - java.io.FileWriter

java.lang.Object
| - java.io.Reader
| - java.io.InputStreamReader
| - java.io.FileReader
由上可以發現,所有要讀取的文件數據都是字節數據,所有的字符都是在內存中處理後形成的。

OutputStreamWriter類的構造方法:
OutputStreamWriter(OutputStream out)
解釋:OutputStreamWriter類的構造方法接收OutputStream類的對象,且OutputStreamWriter是Writer的子類,該類對象可以直接向上轉型爲Writer類對象,這樣就可以將接收到的字節輸出流轉換爲字符輸出流。
同理,InputStreamReader也是一樣。

實現輸出流轉換:

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;

public class TestOutputStreamWriter {
	public static void main(String args[]) throws Exception{
		File file = new File("D:" + File.separator + "demo.txt" + "demo.txt");
		if(!file.getParentFile().exists()){
			file.getParentFile().mkdirs();		//創建父路徑
		}
		OutputStream output = new FileOutputStream(file);  //字節流
		//將OutputStream類對象傳遞給OutputStreamWriter類的構造方法,向上轉型爲Writer
		Writer out = new OutputStreamWriter(output);
		out.write("今天星期五,上山打老虎");
		out.flush();
		out.close();
	}
}
發佈了33 篇原創文章 · 獲贊 1 · 訪問量 4699
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章