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.操作的是純文本。要使用字符流更爲方便。Reader和Writer
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();
}
}
}