转换流是一种adapter(适配器:将一个类的接口变换成客户端所期待的一种接口)。当得到的数据是字节流的,但使用时需要用字符流,这种时候就要采用转换流做转换了。
[1]InputStreamReader从字节输入流到字符输入流
package t1; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Test { public static void main(String[] args) { test1(); } private static void test1() { boolean flag=true; System.out.println("请输入一句话,输入bye程序结束:"); while(flag) { BufferedReader br= new BufferedReader (new InputStreamReader(System.in));//通过InputStreamReader转换 String str=null; try { str = br.readLine(); } catch (IOException e) { e.printStackTrace(); } if(!str.equals("bye")) System.out.println(str); else flag=false; } } }运行结果:
[2]OutputStreamWriter从字节输出流到字符输出流
package t1; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; public class Test { public static void main(String[] args) { test2(); } private static void test2() { BufferedWriter out=null; try { out=new BufferedWriter( new OutputStreamWriter( new FileOutputStream("C:\\Users\\Shinelon\\Desktop\\sb.txt"))); out.write("AROLF"); //out.flush();//清空缓冲区 } catch (Exception e) { e.printStackTrace(); }finally{ try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } }可以看到先创建了FileOutputStream(文件字节输出流)的实例,然后用OutputStreamWriter(从字节输出流到字符输出流)类的转换构造函数建立中间实例,再传给BufferedWriter(缓冲字符输出流)实现了转换。