BufferedReader方式的关键代码
通过桥接器InputStreamReader将FileInputStream文件字节输入流转为字符流
由BufferedReader设置缓冲区并包装InputStreamReader的read()操作,调用readLine()方法逐行读取。
// 创建path文件的文件字节输入流
FileInputStream fileInputStream = new FileInputStream(path);
// 创建从字节流到字符流的桥接器
InputStreamReader isr = new InputStreamReader(fileInputStream, “UTF-8”);
// 创建一个使用指定大小输入缓冲区的缓冲字符输入流,用于包装InputStreamReader的read()操作
BufferedReader reader = new BufferedReader(isr, 5*1024*1024);
// 通过reader.readLine()逐行读取
while ((tem = reader.readLine()) != null) {
// 处理读取的数据
}
// 关闭相关流
reader.close();
isr.close();
fileInputStream.close();
FileChannel方式的关键代码
基于文件通道的nio方式,判断是否含有换行符,从而实现逐行读取数据。
可以考虑通过fileChannel.position(startIndex);将该方式扩展为多线程操作,此时暂时不再展开。
// 分配一个新的字节缓冲区。<