Java IO(十六)InputStreamReader 和 InputStreamWriter

Java IO(十六)InputStreamReader 和 InputStreamWriter

一、介绍

InputStreamReader 和 OutputStreamWriter 是字节流通向字符流的桥梁:它使用指定的 charset 读写字节并将其解码为字符。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。

  • InputStreamReader:字节字符转换输入流,继承于 Reader,它的的作用是将字节输入流转换成字符输入流。
  • OutputStreamWriter :字节字符转换输出流,继承于 Writer,它的的作用是将字节输出流转换成字符输出流。

二、构造方法

(一)、InputStreamReader 

(二)、InputStreamWriter

三、常用API

(一)、InputStreamReader 

(二)、InputStreamWriter

四、实例

public class Demo {
    private static char[] chs = new char[] 
            {'a','b','c','d','e','f','g','h','i','j','k','l','m',
            'n','o','p','q','r','s','t','u','v','w','x','y','z'};
    public static void main(String[] args) {
        write();
        read();
    }
    /**
     * OutputStreamWriter 测试
     */
    public static void write() {
        OutputStreamWriter out = null;
        try {
            out = new OutputStreamWriter(new FileOutputStream(new File("demo.txt")));
            out.write(chs);// 写入字符数组
            out.write('A');// 写入字符A
            out.write("0123456789");// 写入字符串
            out.write(chs, 10, 10);// 写入字符数组的一部分
            String str = new String(chs).toUpperCase();// 将字符数组转成字符串并大写
            out.write(str, 0, 10);// 写入字符串的一部分
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if(out != null)
                    out.close();
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * InputStreamReader 测试
     */
    public static void read() {
        InputStreamReader in = null;
        char[] buff = new char[20];
        int len = 0;
        try {
            in = new InputStreamReader(new FileInputStream(new File("demo.txt")));
            for(int i = 0;i < 5;i++) {
                if(in.ready())
                    System.out.println("read() : " + (char)in.read());// 读取一个字符
            }
            len = in.read(buff, 0, 10);// 读取字符一部分
            System.out.println("read(buff, 0, 10) : " + new String(buff,0,len));
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if(in != null)
                    in.close();
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
    }
}
posted @ 2020-05-24 14:22  凌倾-学无止境  阅读(982)  评论(0编辑  收藏  举报