当前位置: 首页 > 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();

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 内存分区学习
  • Qt使用绿色pdf阅读器打开文件
  • java spring定时任务-动态任务
  • 认知杂谈59《实力为王:用硬本事赢得尊重,开启人生逆袭路》
  • Python3中函数的用法
  • linux-用户与权限管理-组管理
  • 防患于未然,智能监控新视角:EasyCVR视频平台在高校安全防控中的关键角色
  • 一维稳态与非稳态导热的详细分析
  • 通信工程学习:什么是IP-CAN(IP连接接入网)
  • ETL_场景练习
  • 建投数据通过ISO9001再认证
  • [Postman]接口自动化测试入门
  • 探索Promise:JavaScript异步编程的基石
  • 组件通信——provide 和 inject 实现爷孙组件通信
  • 机器学习和深度学习的区别是什么?
  • 07.Android之多媒体问题
  • Apache的基本使用
  • docker容器内的网络抓包
  • echarts花样作死的坑
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • go append函数以及写入
  • java8 Stream Pipelines 浅析
  • JS基础之数据类型、对象、原型、原型链、继承
  • Mysql5.6主从复制
  • spring security oauth2 password授权模式
  • supervisor 永不挂掉的进程 安装以及使用
  • vue 配置sass、scss全局变量
  • 我与Jetbrains的这些年
  • 译米田引理
  • 赢得Docker挑战最佳实践
  • 硬币翻转问题,区间操作
  • 湖北分布式智能数据采集方法有哪些?
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (145)光线追踪距离场柔和阴影
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Java)【深基9.例1】选举学生会
  • (pycharm)安装python库函数Matplotlib步骤
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (回溯) LeetCode 78. 子集
  • (十六)一篇文章学会Java的常用API
  • (四)c52学习之旅-流水LED灯
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)linux下的时间函数使用
  • (转)我也是一只IT小小鸟
  • (转载)Linux网络编程入门
  • (自用)网络编程
  • .NET C#版本和.NET版本以及VS版本的对应关系