转换流的由来: 字符流与字节流之间的桥梁 方便了字符流与字节流之间的操作
转换流的应用: 字节流中的数据都是字符时,转成字符流操作更高效。
转换流:
InputStreamReader:字节到字符的桥梁,解码。
OutputStreamWriter:字符到字节的桥梁,编码。
InputStreamReader是字节流通向字符流的桥梁。
示例1:
- 1. import java.io.BufferedReader;
- 2. import java.io.IOException;
- 3. import java.io.InputStream;
- 4. import java.io.InputStreamReader;
- 05.
- 6. public class TransStreamDemo{
- 07.
- 8. public static void main(String[] args) throws IOException {
- 9. //字节流
- 10. InputStream in = System.in;
- 11.
- 12. //将字节转成字符的桥梁,转换流
- 13. InputStreamReader isr = new InputStreamReader(in);
- 14.
- 15. //对字符流进行高效装饰,缓冲区
- 16. BufferedReader bufr = new BufferedReader(isr);
- 17.
- 18. String line = null;
- 19.
- 20. //读取到了字符串数据
- 21. while((line = bufr.readLine()) != null){
- 22. if("over" .equals(line))
- 23. break;
- 24. System.out.println(line.toUpperCase());
- 25. }
- 26. }
- 27. }
复制代码
使用字节流读取一个中文字符需要读取两次,因为一个中文字符由两个字节组成,而使用字符流只需读取一次。
System.out的类型是PrintStream,属于OutputStream类别。
OutputStreamReader是字符流通向字节流的桥梁。
示例2:
- 1. import java.io.BufferedReader;
- 2. import java.io.BufferedWriter;
- 3. import java.io.IOException;
- 4. import java.io.InputStreamReader;
- 05. import java.io.OutputStreamWriter;
- 06.
- 07. public class TransStreamDemo{
- 08.
- 09. public static void main(String[] args) throws IOException {
- 10.
- 11. BufferedReader bufr = new BufferedReader(new
- InputStreamReader(System.in));
- 12.
- 13. BufferedWriter bufw = new BufferedWriter(new
- OutputStreamWriter(System.out));
- 14.
- 15. String line = null;
- 16.
- 17. while((line = bufr.readLine()) != null){
- 18. if("over" .equals(line))
- 19. break;
- 20.
- 21. bufw.write(line.toUpperCase());
- 22. bufw.newLine();
- 23. bufw.flush();
- 24. }
- 25. }
- 26. }
复制代码 |
|