天天看點

java基礎學習心得——自定義類實作BufferedReader功能

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對象的最後一行單獨處理,當最後一行有内容但沒有換行時,這條語句能把最後一行的内容給傳回