Java - IO - 轉換流 - InputStreamReader - OutputStreamWriter

InputStreamReader:是字節流通向字符流的橋樑,它使用指定的charset 讀取字節並將其解碼爲字符。

OutputStreamWriter:是字符流通向字節流的橋樑:可使用指定的charset 將要寫入流中的字符編碼成字節。

當用字節流操作純文本的時候,爲了方便可以使用轉換流,或者當涉及到字符集編碼轉換的時候也可以使用轉換流。


分析:將一箇中文字符串按照指定編碼表寫入到一個文件中。

   1.操作的是純文本。要使用字符流更爲方便。Writer 。

   2.是對文件的操作。想到了 File , 找到 FileWritre。

   3.可是FileWriter,使用的是默認編碼表:操作系統的編碼表(GBk)。不能自定義編碼。

   4.馬上就想到它的父類 OutputStreamWriter 轉換流。

   5.其實字符流,也是由字節流通過轉換流轉換過來的。

      OutputStreamWriter osw = newOutputStreamWriter(new FileOutputStream("01.txt")); 和

      FileWriter fw = newFileWriter("01.txt") 是等價的。

   注意:OutputStream是一個抽象類,是不能被實例化的。。。 

   6.如果要使用高效的緩衝區裝飾,那麼就要想到BufferedWriter.當然有時候是多餘的。。。

   BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("pan.txt"),"utf-8"));

public class IoTest3 {
	//將一箇中文字符串按照指定編碼表寫入到一個文件中。
	public static void main(String[] args) throws IOException {		
		
		BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("pan.txt"),"utf-8"));
		bufw.write("我絕對不應該是這樣的,我應該更努力...");
		bufw.close();
	}
}


分析:讀取鍵盤錄入信息並寫入到,文件中。

   1.操作的是純文本。要使用字符流更爲方便。ReaderWriter

   2.源設備:鍵盤。想到 System.in 。是字節流,但操作的是純文本,所以又想到了轉換流:InputStreamReader

   3.目的設備:文件--硬盤。想到了FileWriter

   4.使用高效裝飾一下吧:BufferedReader 和 BufferedWriter 。其實只要是涉及到鍵盤設備的就要想到 Buffer。因爲

  Buffer 的 readLine 可以讀取一行數據操作更方便。。。

public class IoTest3 {
	//將一箇中文字符串按照指定編碼表寫入到一個文件中。
	public static void main(String[] args) throws IOException {		
		//緩衝區,緩衝轉換流,轉換流操作字節流。。。
		BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
		//緩衝區,緩衝字符流。
		BufferedWriter bufw = new BufferedWriter(new FileWriter("p.txt"));
		
		String line = null;		
		while((line = bufr.readLine())!=null){
			if(line.equals("over"))
				break;
			bufw.write(line);
			bufw.newLine();
			bufw.flush();
		}		
	}
}

分析:讀取一個文本文件,寫入到控制檯上。

   1.操作的純文本數據。使用字符流,Reader 和 Writer

   2.源設備:文件--硬盤。 FileReader

   3.目的設備:顯示器。System.out 。轉換一下OutputStreamWriter。

   4.高效。。。

public class IoTest3 {
	public static void main(String[] args) throws IOException {		
		
		BufferedReader bufr = new BufferedReader(new FileReader("p.txt"));
		BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		String line = null;
		while((line = bufr.readLine())!=null){
			bufw.write(line);
			bufw.newLine();
			bufw.flush();			
		}
	}
}

分析:讀取鍵盤錄入數據,顯示在控制檯上。

   1.操作的是純文本。

   2.源:鍵盤 System.in

   3.目的:控制檯 System.out

   4.轉換

   5.高效

public class IoTest3 {
	public static void main(String[] args) throws IOException {		
		
		BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		String line = null;
		while((line = bufr.readLine())!=null){
			if(line.equals("over"))
				break;
			bufw.write(line);
			bufw.flush();			
		}
	}
}

























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章