按照行读更快(通向缓冲区, 普通的字符输出流是通向文件)
字符缓冲输出流:
想要追加,还是得用原始管道:
newLine (字符缓冲流的API)
package com.itheima.d3_char_buffer;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
/**
* 目标: 学会使用缓冲字符输入流提高字符输入流的性能,新增了按照行读取的方法(经典代码)
* 经典代码含义:有更多人用这种代码的风格来写
*
*/
public class BufferedReaderDemo1 {
public static void main(String[] args) {
try (
// 资源要释放,放到小括号里面
// 1. 创建一个文件字符输入流与源文件接通
Reader fr = new FileReader("io-app2\\src\\data.txt");
// a. 把低级的字符输入流包装成高级的缓冲字符输入流 (输入流读写)-- 将本地文件读到内存
// 由于要用BufferedReader的独有方法,就不用多态写
BufferedReader br = new BufferedReader(fr);
){
// // 2. 用循环,每次读取一个字符数组的数据
// char[] buffer = new char[1024]; // 这个字符数组存储1024个字符 元素
// int len; // 记录每次读取了多少个元素 (最后一桶可能装不满,读多少倒多少)
// while ((len = br.read(buffer)) != -1){ // 不等于-1 代表读到了元素
// String rs = new String(buffer,0,len); // 做一个解码 读多少倒多少
// System.out.print(rs);
// }
// // 读文件一行数据
// System.out.println(br.readLine()); // 有空行一样读
// // (空行一旦下面没有内容了,就返回null,如果还有内容则把空行读出来)很智能
// // 相当于读到null就结束
// System.out.println(br.readLine()); // 接着往下读一行
// System.out.println(br.readLine());
// System.out.println(br.readLine());
// 改进用循环
String line; // 定义一个变量表示是否读到内容
while ((line = br.readLine()) != null){ // 如果没读到就为空,不为空则表示读到立刻
System.out.println(line); // 输出该读到的内容
}
} catch (Exception e) {
e.printStackTrace();
}
}
}