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

编码转换流

同理,创建f1和f2方法,分别测试OutputStreamWriterInputStreamReader

 也是主要分三步,即1创建流   2使用流   3关流

OutputStreamWriter   f1方法

因为要操作流,所以先创建一个try-catch-finally结构,创建流对象OutputStreamWriter,传参使用FileOutputStream,依然传地址,使用write方法往文件中写入一串字符,去磁盘检查文件即可验证

 

 在记事本中读取的时候,这里可能会出现乱码,就要看看idea的编码和记事本是不是一样的,都在右下角

 所以说,这里idea是可以在程序中指定编码的,从而达到编码转换的效果

回到创建FileOutputStream的地方:可以看到FileOutputStream是有好几种重载的构造方法的,后面第二个参数就是指定字符集

可以写入 "gbk" , "iso-8859-1"等 

保持写入时的编码和记事本的编码一致,即可在程序写进记事本后,去打开记事本正常查看

InputStreamReader   f2方法

这里如果不用记事本,程序写完后,继续使用程序来读取也是可以的

 同样因为要操作流,所以先创建一个try-catch-finally结构,创建流对象InputStreamReader,传参使用FileInputStream,依然传上面这个地址,使用read方法从文件中读取出这一串字符

这里发现读取出来的并不是预想之中的字符,而是一串数字

并且在换了几种字符集后,发现不同的编码表  打印出来的数字也不一样的

如果读取的是utf-8 和idea默认读取的编码是同一种,那么读取到的数字就和写入的一样

实际上我们并不是想看这个编码,是想看中文字符内容,下面来完善

1、先动态创建一个长度足够的char数组

2、然后调read方法,将字符数据读到这个数组里面去,返回是数据的长度,不过此时是read的重载的传数组的方法,直接传数组

3、最后调String重载的构造方法,将char数组封装成String

这里传起始下标和数据的长度是因为要读到了几个长度,就封装几个长度,不然会字符串输出完后后面全是空格 

注意传的长度是上面接收read方法返回的数据长度,而不是char数组的长度chars.length !

代码: 

到这里还需要补充一点,,回去仔细看控制台输出,会发现字符串的第一个字符没有了,

换了其他字符串写入也是丢失首字符

 这是因为在前面还调用read方法读取了一下,而read方法的特性是按顺序读取,且只能读取一次,其实前面已经把第一个字符读了,打印出一个编码数字到控制台,再继续读取后面剩下的字符,就引起了这个问题

http://www.lryc.cn/news/165603.html

相关文章:

  • Pycharm创建项目时如何自动添加头部信息
  • DAY48
  • 光栅和矢量图像处理:Graphics Mill 11.4.1 Crack
  • vue3中组件没有被调用,没进去也没报错
  • Postgresql中ParamListInfoData的作用
  • 《计算机视觉中的多视图几何》笔记(1)
  • YOLO目标检测——火焰检测数据集+已标注xml和txt格式标签下载分享
  • tkinter四大按钮:Button,Checkbutton, Radiobutton, Menubutton
  • Sudowrite:基于人工智能的AI写作文章生成工具
  • 加密狗软件有什么作用?
  • 嵌入式Linux驱动开发(I2C专题)(二)
  • SMT贴片制造:发挥的作用和价值]
  • 蓝桥杯官网练习题(幸运数字)
  • pandas笔记:显示中间的省略号
  • 解决vagrant安装的centos7,在window主机重装系统过后,再次用vagrant启动centos7却无法启动
  • 嵌入式这个领域会变得过于内卷吗?
  • Linux下安装和使用MySQL的详细教程
  • 【Linux】多线程互斥与同步
  • 从零开始:云服务器构建网站的完全指南
  • idea中的debug界面上没有进入方法的红色按钮
  • JavaScript知识系列(4)每天10个小知识点
  • Xpath 访问 Svg 内部的元素
  • 无涯教程-JavaScript - DOLLARDE函数
  • C语言双向链表
  • 朋友圈大佬都去读研了,这份备考书单我码住了
  • JavaScript设计模式(五)——发布订阅模式、桥接模式、组合模式
  • prize_p1
  • Acwing 3534. 矩阵幂 3535. C翻转
  • Spring Cloud:构建微服务的最佳实践
  • 时间序列场景下多种数据填充算法实践与对比分析