IO流第38天(转换流InputStreamReader和OutputStreamWriter)

转换流InputStreamReader和OutputStreamWriter

  1. InputStreamReader:Reader的子类,可以将InputStream(字节流)包装成Reader(字符流)
  2. OutputStreamWriter:Writer的子类,可以将OutputStream(字节流)包装成Writer(字符流)
  3. 当处理纯文本数据时,如果使用字符流效率更高,并且可以有效解决中文乱码问题,所以建议将字节流转换成字符流
  4. 可以在使用时指定编码格式(比如utf-8,gbk,gb2312等)
    InputStreamReader可以传入一个Input对象,而且可以指定处理的编码方式
    OutputStreamWriter可以传入一个Outnput对象,而且可以指定处理的编码方式
    image
    image
    InputStreamReader案例:
    演示使用InputStreamReader转换流解决中文乱码问题
    将字节流FileInputStream转换成InputStreamReader字符流
public static void main(String[] args) throws IOException {
        String filepath = "d:\\a.txt";
        //将 FileInputStream转成InputStreamReader,指定编码为gbk
        InputStreamReader isr = new InputStreamReader(new FileInputStream(filepath), "gbk");
        //将InputStreamReader传入给BufferedReader
        BufferedReader br = new BufferedReader(isr);
        //读取
        String s = br.readLine();
        System.out.println(s);
        br.close();
    }

OutputStreamWriter案例:
演示使用OutputStreamWriter转换流解决中文乱码问题
将字节流FileOutputStream转换成OutputStreamWriter字符流

 public static void main(String[] args) throws IOException {
        String filePath="d:\\abc.txt";
        String str="helle,龚嘉乐,你一定会成功,加油,努力";
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
        OutputStreamWriter osw = new OutputStreamWriter(bos,"gbk");
        osw.write(str);
        System.out.println("输出成功");
        osw.close();
    }
posted @ 2022-07-30 01:23  不再犹豫27  阅读(53)  评论(0)    收藏  举报