【Java】有参 `read()` 详解

一、用法

public int read(char[] buffer)      读取多个数据,读到末尾返回-1

参数是一个 char类型的数组,字节流是一个 byte类型 的数组。

//1.创建对象,读取myio模块下的a.txt文件
FileReader fr = new FileReader("myio\\a.txt");
//2.读取数据
char[] chars = new char[2];
int len; // 表示当前读到了几个
//read(chars):读取数据,解码,强转三步合并了,把强转之后的字符放到数组当中
//空参的read + 强转类型转换
while((len = fr.read(chars)) != -1){
    //把数组中的数据变成字符串再进行打印
    System.out.print(new String(chars, 0, len)); // 注意并不是将所有数据都变成字符串,因为在最后一次读取数据的时候,数组有可能装不满
}
//3.释放资源
fr.close();

在打印的时候由于 print 带了 ln ,但是为什么害后面还有一行?

在之前我们说过,每行结束有一个回车换行,在 Windows 中是 \r\n,第一次读取的时候是第一个 ,第二次读取的时候是 \r\r 没有打印出来,所以在展示的时候只有一个害。

image-20240503132342512

再往下读两个,是读到 \n

由于 \n 的表现形式就是一个换行,因此在控制台里面就是先换行再打印输出

image-20240503133519457

如果这样看的不舒服,可以将 ln 删掉,这样就会按照文本中原有的方式进行输出了。

image-20240503133726286

二、原理

read(chars):读取数据,解码,强转三步合并了,把强转之后的字符放到数组当中
等价于空参的read + 强转类型转换
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值