BufferedReader屬于java.io.Reader的子類,不僅實作了FileReader的功能,還增加了緩沖區,提高了程式的讀寫效率。
下面,自定義類myBufferedReader模拟實作BufferedReader的功能:
class myBufferedReader
{
private Reader r;
myBufferedReader(Reader r)
{
this.r = r;
}
public String myReadLine()throws IOException
{
int ch;
StringBuilder sb = new StringBuilder();
while((ch=r.read())!=-1)
{
if(ch == '\r')
continue;
else 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();
}
}
定義的myBufferedReader類,提供了構造函數、myReadLine方法和myClose()方法。
通過構造函數可向類中傳入一個Reader類的子類對象,myClose()方法可關閉流對象。
在方法myReadLine()中,定義了一個緩沖區sb,每讀一個字元,就将字元儲存到緩沖區中,當讀完一行後,将改行的值傳回。
while循環外的if語句是對r對象的最後一行單獨處理,當最後一行有内容但沒有換行時,這條語句能把最後一行的内容給傳回