java的字符流

字符流的底层也是字节流。字符流=字节流+字符集。
特点是输入流一次读一个字节,遇到中文时,一次读多个字节(读多少个与字符集有关);输出流底层会把数据按照指定的编码方式进行编码,变成字节再写到文件中。
字符流适用于对纯文本文件进行操作。
Reader
Reader和Writer是抽象类。
Reader的实现类:
FileReader:操作本地文件的字符输入流;
BufferedReader:操作缓冲区的字符输入流;
LineNumberReader:带有行号的字符输入流。
Writer的实现类:
FileWriter:操作本地文件的字符输出流;
BufferedWriter:操作缓冲区的字符输出流;
LineNumberWriter:带有行号的字符输出流。
一、FileReader
(一)操作步骤
(1)创建字符输入流对象;
在这里插入图片描述
(2)读取数据;
在这里插入图片描述

(3)释放资源。
在这里插入图片描述
注意:
FileReader对象的空参的read()方法默认是“一次读一个字节,遇到中文一次读三个字节”,在读取之后还会进行解码转为十进制,十进制的数字也表示字符集上的数字。例如:英文二进制文件里的数据为“01100001”,read()方法进行读取解码后结果为97;中文二进制文件中内容为“11100110 10110001 10001001”,read()方法进行读取解码转成十进制为27721.
例如,新建一个a.txt文件,内容如下:
在这里插入图片描述
在这里插入图片描述
强转为字符输出:
在这里插入图片描述
带参数的read()读取数据、解码和强转三步合并了,把强转之后的数据放到数组中。
再例如,使用带参数的read():
在这里插入图片描述
说明:上述代码,‘害’后面隐藏两个字符"\r\n",所以“害\r”为一组输出,‘\r’没有显示出来;"\n说"为一组输出,且’\n’实现了换行。
注意:上述代码中的细节,new String()指定后面两个参数,读到几个字节就使用几个字节,因为最后可能字节不够填充byte数组。
二、FileWriter
构造方法:
在这里插入图片描述
后面两个构造方法第二个参数append赋值为true则进行续写。
成员方法:
在这里插入图片描述
在这里插入图片描述
例如:
在这里插入图片描述
结果为:
在这里插入图片描述
FileReader对象通过write()方法把25105根据UTF-8解码规则转化为字符“我”。
再例如,一次写多个字符:
在这里插入图片描述
结果为:
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值