java基础-IO(6)转换流InputStreamReader、OutputStreamWriter

引入:

从第一节可知,流分为两类:字节流和字符流,转换流就是在两者之间进行转换。
字节流转换为字符流; 字符流转换为字节流。

字符集在这里插入图片描述

字符集:定义了可用字符及其对应的数字编码的集合。常见的字符集有UTF-8、GBK、Unicode等等;不同的字符集对同一个字符的编码可能不一样。
如: 汉字 “一” 在GB2312字符集中用两个字节进行编码(11010010 10111011);
在UTF-8字符集使用三个字节进行编码(11100100 10111000 10000000)。

String str = "一";
byte[] bytes = str.getBytes("GB2312");
System.out.println(bytes.length);  //3
byte[] bytes1 = str.getBytes("UTF-8");
System.out.println(bytes1.length);  // 2

所以在进行流转换的过程中,应该保证使用的字符集一致,否则会出现乱码问题!

字节流转换为字符流

在这里插入图片描述

 String str = "好好学习,天天向上";

        //使用指定的字符集编码
        byte[] bytes = str.getBytes("UTF-8");
        InputStream inputStream = new ByteArrayInputStream(bytes);
        int i;

        //使用字节流读取  每次读取一个字节
//        while ((i = inputStream.read()) != -1) {
//            System.out.print(i + "\t");
//        }
//
//        inputStream.reset();
//        System.out.println();

        //将字节流转换成字符流 每次读取一个字符
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
        while ((i = inputStreamReader.read()) != -1) {
            System.out.print((char) i);
        }

```![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d552cd668bb8446fa5f9bfecbe8c864d.png)

```java
   String str = "好好学习,天天向上";

   //字节输出流
    OutputStream outputStream = new FileOutputStream("C:\\Users\\XXXX\\Desktop\\aa\\aa.txt");

    //字符输出流转换为字节输出流
    OutputStreamWriter osw = new OutputStreamWriter(outputStream, "UTF-8");

    osw.write(str);
    outputStream.flush();
    osw.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值