/*
明白了BufferedReader类中特有方法readLine的原理后,
可以自定义一个类包含一个功能和readLine一致的方法,
来模拟一下BufferedReader。
*/
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
class MyBufferedReader{
private FileReader r;
MyBufferedReader(FileReader r){
this.r=r;
}
//可以异常读一行数据的方法
public String myReadLine() throws IOException{
//定义一个临时容器,原BufferedReader封装的是字符数组。
//为了演示方便,定义一个StringBuilder容器,因为最终还是要将数据变成字符串。
StringBuilder sb=new StringBuilder();
int ch=0;
while((ch=r.read())!=-1)
{
if(ch=='\r')
continue;
if(ch=='\n')
return sb.toString();
else
//把读到的字符存到缓冲区
sb.append((char)ch);
}
//如果在一行字符后没有回车符,就只能读取,不能返回。
//加上这句判断语句就可以解决这个问题。
if(sb.length()!=0)
return sb.toString();
return null;
}
public void myClose() throws IOException{
r.close();
}
}
public class MyBufferedReaderDemo {
public static void main(String[] args) throws IOException {
FileReader fr=new FileReader("buf.txt");
MyBufferedReader mybuf=new MyBufferedReader(fr);
String line=null;
while((line=mybuf.myReadLine())!=null)
{
System.out.println(line);
}
mybuf.myClose();
}
}
自定义一个类包含一个功能和readLine一致的方法来模拟BufferedReader
最新推荐文章于 2022-06-27 15:59:14 发布