输入字符流:
----------------| Reader 用于读取字符流的抽象类。
------------------------| FileReader 用于读取文件的输入字符流
------------------------|
BufferedReader 缓冲输入字符流。目的是为了提高读取文件字符的效率和扩展了FileReader的功能。
其实该类内部也是维护了一个字符数组。
注意:缓冲流都不具备读写文件的能力。
package com.cn.buffered_RW;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/**
* Author:Liu Zhiyong(QQ:1012421396)
* Version:Version_1
* Date:2016年7月28日18:53:56
* Desc:
输入字符流:
----------------| Reader 用于读取字符流的抽象类。
------------------------| FileReader 用于读取文件的输入字符流
------------------------| BufferedReader 缓冲输入字符流。目的是为了提高读取文件字符的效率和扩展了FileReader的功能。
其实该类内部也是维护了一个字符数组。
注意:缓冲流都不具备读写文件的能力。
*/
public class Demo1 {
public static void main(String[] args) throws IOException {
//1.找到目标文件
File file = new File("F:\\eclipseWorkspace20160629\\20160629093238\\src\\com\\cn\\reader\\Demo2.java");
//2.建立数据输入通道
FileReader fileReader = new FileReader(file);
//3.建立缓冲输入字符流
BufferedReader bufferedReader = new BufferedReader(fileReader);
// bufferedReadTest1(bufferedReader);
//读取全部文件数据
String line = null;
while((line = myReadLine(bufferedReader)) != null){//标记1处
System.out.println(line);
}
}
//模拟的readLin()
public static String myReadLine(BufferedReader bufferedReader) throws IOException{
StringBuilder sb = new StringBuilder();
int content = 0;
while((content = bufferedReader.read()) != -1){
if(content == '\r'){// 回车 回车符就是回到一行的开头 '\r' = 13
continue;//碰到\r 继续往下读
}else if(content == '\n'){ // 换行 换行符就是另起一行'\r' = 10
break; //若读到了\n就说明读完了
}else{//普通字符
sb.append((char)content);
}
}
if(content == -1){//代表已经读取完毕, 为了能够读取全部文件数据
return null;
}
return sb.toString();
}
// bufferedReader.read()方法 和 bufferedReader.readLine()方法
public static void bufferedReadTest1(BufferedReader bufferedReader) throws IOException{
//方式1
/* int content = 0;
while((content = bufferedReader.read()) != -1){//读到了一个字符。读取到的字符肯定也是从BufferedReader内部的字符组中获取到的。所以效率高。
System.out.print((char)content);
}*/
//方式2
/* String readLine = null;
while((readLine = bufferedReader.readLine()) != null){//一次读一行
System.out.println(readLine);
// System.out.print(readLine); //readLine() 没有读到\r\n
}*/
//运用模拟的readLin()
String data = myReadLine(bufferedReader);
System.out.println(data);
//4.关闭资源
bufferedReader.close();
}
}