JAVA学习——转换流

目录

一、字符输入转换流(InputStreamReader)

二、字符输出转换流(OutputStreamWriter)


 

引入问题:

如果代码编码和被读取的文本文件的编码是不一致的,使用字符流读取文本文件时就会出现乱码!

解决方法: 使用字符转换流

一、字符输入转换流(InputStreamReader)

1. 作用:解决思路:先获取文件的原始字节流,再将其按真实的字符集编码转成字符输入流,这样字符输入流中的字符就不乱码了

第一个很少用,效果跟FileReader一样

 实现代码:

public static void main(String[] args) {
        try (
                //拿到原始字节流
                InputStream is = new FileInputStream("用与默认编码集不一样的编码文件");
                //把字节流编写成字符流
                Reader rd = new InputStreamReader(is,"GBK");
                //用缓冲流包装
                BufferedReader brs = new BufferedReader(rd);
                ){
            String len;
            while ((len = brs.readLine()) != null) {
                System.out.println(len);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

 


二、字符输出转换流(OutputStreamWriter)

1.  作用:  可以控制写出去的字符使用什么字符集编码。
2.  解决思路:  获取字节输出流,再按照指定的字符集编码将其转换成字符输出流,以后写出去的字符就会用该字符集编码了。

public static void main(String[] args) {
        try (
                //1.创建一个文件字节输出流
                OutputStream os = new FileOutputStream("文件路径");
                //2.把原始的字节输出流,按照指定的字符集编码转换成字符输出转换流
                OutputStreamWriter osw = new OutputStreamWriter(os,"GBK");
                //3.把字符输出转换流包装成缓冲字符输出流
                BufferedWriter bw = new BufferedWriter(osw);
                ){
            bw.write("abc");
            bw.write("在加纳共和国离婚");
        }catch (Exception e) {
            e.printStackTrace();
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值