我们都知道通过使用BufferedReader的readLine()方法可以逐行读取文件的内容,如下所示
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class ReadLine{
public static void main(String[] args){
try{
FileReader fileReader=new FileReader("3.txt");
BufferedReader bufferedReader=new BufferedReader(fileReader);
String str="";
String s="\n";
try{
while((str=bufferedReader.readLine())!=null){
System.out.println(str);
}
}catch(IOException e){
// TODO: handle exception
e.printStackTrace();
}
}catch(FileNotFoundException e){
// TODO: handle exception
e.printStackTrace();
}
}
}
但是readLine()方法又是如何实现的呢?
这里通过创建一个新的MyBufferedReader的类来完成readLine()方法的具体实现
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class MyBufferedReader{
FileReader fileReader;
public MyBufferedReader(FileReader fileReader){
this.fileReader=fileReader;
}
public String readLine() throws IOException{
int n=0;
StringBuilder builder=new StringBuilder();
while((n=fileReader.read())!=-1){
char c=(char)n;
if(c=='\r')
continue;
if(c=='\n')
return builder.toString();
builder.append(c); //追加c
}
if(builder.length()!=0)
return builder.toString();
return null;
}
public static void main(String[] args){
try{
MyBufferedReader myBufferedReader=new MyBufferedReader(new FileReader("3.txt"));
String str="";
try{
while((str=myBufferedReader.readLine())!=null){
System.out.println(str);
}
}catch(IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}catch(FileNotFoundException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
当然,事先需要准备一个3.txt的文件,文件中包含换行的内容,以便验证最终的输出结果。