Java IO流之字符流详解

字符流概述

字符流的底层其实就是字节流
字符流 = 字节流 + 字符集

字符流特点

  • 输入流:一次读一个字节,遇到中文时,一次读多个字节
  • 输出流:底层会把数据按照指定的编码方式进行编码,变成字节再写到文件中

使用场景

用于对纯文本文件进行读写操作

1. FileReader字符输入流

书写步骤:
① 创建字符输入流对象

细节1:如果文件不存在,就直接报错
在这里插入图片描述

② 读取数据

细节1:按字节进行读取,遇到中文,一次读多个字节,读取后解码,返回一个整数
读到文件末尾,read方法返回-1
在这里插入图片描述

③ 释放资源

细节:每次使用完流之后都要释放资源

字符输入流底层原理(重点)

Ⅰ、创建字符输入流对象
  底层:关联文件,并创建缓冲区(长度为8192的字节数组)字符流有缓冲区,字节流并没有。
Ⅱ、读取数据
  底层:1.判断缓冲区中是否有数据可以读取。  2.缓冲区没有数据:就从文件中获取数据装到缓冲区中,每次尽可能装满缓冲区;如果文件中没有数据了,就返回-1。 3.缓冲区有数据:就从缓冲区中读取。空参的read方法:一次读取一个字节,遇到中文一次读取多个字节,把字节解码并转成十进制返回;有参的read方法:把读取字节,解码,强转三步合并了,强转之后的字符放到数组中。

2. FileWriter字符输出流

书写步骤:
① 创建字符输出流对象

细节1:参数是字符串表示的路径或者File对象都是可以的
细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的
细节3:如果文件已经存在,则会清空文件,如果不想清空可以打开续写开关
在这里插入图片描述

② 写数据

细节:如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上对应的字符
在这里插入图片描述

③ 释放资源

细节1:每次使用完流之后都要释放资源

字符输出流底层原理(重点)

内存中也存在一个缓冲区(长度为8192的字节数组),从内存中的缓冲区向目的地文件中写出数据需要满足三种情况之一:
情况一 缓存区装满了
情况二 flush()刷新
情况三 close()关流

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小钟不想敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值