【Java学习笔记】25:转换流(从字节流到字符流的转换)

来源:互联网 发布:转行做网络运营 编辑:程序博客网 时间:2024/06/07 21:59

转换流是一种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(缓冲字符输出流)实现了转换。