一、用法
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
没有打印出来,所以在展示的时候只有一个害。
再往下读两个,是读到 \n
和 说
,
由于 \n
的表现形式就是一个换行,因此在控制台里面就是先换行再打印输出
如果这样看的不舒服,可以将 ln
删掉,这样就会按照文本中原有的方式进行输出了。
二、原理
read(chars):读取数据,解码,强转三步合并了,把强转之后的字符放到数组当中
等价于空参的read + 强转类型转换