欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-07 08:32:26
...

转换流是一种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;
        }
    }
}

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

[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();
            }
        }
    }
}

【Java学习笔记】25:转换流(从字节流到字符流的转换)
可以看到先创建了FileOutputStream(文件字节输出流)的实例,然后用OutputStreamWriter(从字节输出流到字符输出流)类的转换构造函数建立中间实例,再传给BufferedWriter(缓冲字符输出流)实现了转换。