当前位置: 首页 > news >正文

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)```javaString 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();

http://www.mrgr.cn/news/24031.html

相关文章:

  • 元学习之应用案例
  • UML之类图详解
  • 《深入理解 JavaScript 中的定时器》
  • 一篇文章搞懂SQL优化
  • 学会这2项技能,普通人每年多赚10万+,互联网创业者必备!
  • Kerberos:更安全的网络认证协议
  • 香帅的金融学讲义:深入剖析与解读
  • Sklearn的datasets模块与自带数据集介绍
  • 使用 gdb 在汇编指令层面对程序注入、修改
  • 数据结构与算法1: 链表
  • Linux内核 -- 内存管理之 lru_cache_add_inactive_or_unevictable 函数
  • [Linux]:文件(下)
  • MySQL-CRUD入门2
  • 网络初识-相关概念
  • 《深度学习》OpenCV 高阶 图像直方图、掩码图像 参数解析及案例实现
  • 神经处理单元(NPU)小知识
  • 通信电路和信道的区别与联系
  • 004——双向链表和循环链表
  • 如何利用 CSS 渐变实现多样化背景效果
  • python+pytest+request 接口自动化测试