實(shí)例如下所示:
成都創(chuàng)新互聯(lián)專注于梨樹企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站建設(shè)。梨樹網(wǎng)站建設(shè)公司,為梨樹等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站建設(shè),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
package day0208; import java.io.FileReader; import java.io.IOException; /* * 自定義讀取緩沖區(qū),實(shí)現(xiàn)BufferedReader功能 * 分析: * 緩沖區(qū)就是封裝了一個(gè)數(shù)組,并對(duì)外提供了更多的方法對(duì)數(shù)組進(jìn)行訪問(wèn) * 其實(shí)這些方法最終操作的都是數(shù)組的角標(biāo) * 緩沖的原理: * 其實(shí)就是從源中獲取一批數(shù)據(jù)裝進(jìn)緩沖區(qū),再?gòu)木彌_區(qū)取出數(shù)據(jù) * 當(dāng)此次取完后,繼續(xù)從源中取出一批數(shù)據(jù)到緩沖區(qū) * 當(dāng)源中的數(shù)據(jù)取光時(shí),用-1作為結(jié)束標(biāo)記。 */ public class MyBufferReader { private FileReader r; MyBufferReader(FileReader r){ this.r=r; } //定義一個(gè)數(shù)組作為緩沖區(qū) private char[] buf=new char[1024]; //定義個(gè)指針用于操作這個(gè)數(shù)組的元素,當(dāng)操作到最后一個(gè)元素后,指針應(yīng)該歸零 private int pos=0; //定義一個(gè)計(jì)數(shù)器,用于記錄緩沖區(qū)中的數(shù)據(jù)個(gè)數(shù),當(dāng)該數(shù)據(jù)減到0,就從源中繼續(xù)獲取數(shù)據(jù)到緩沖區(qū)中。 private int count =0; public int myRead() throws IOException{//自定義read方法 if(count==0){//如果緩沖區(qū)中沒(méi)有數(shù)據(jù),則從源中獲取一批數(shù)據(jù)到緩沖區(qū) count=r.read(buf); pos=0; } if(count<0){ return -1; } char ch=buf[pos++];//一次從緩沖區(qū)獲取一個(gè)字符 count--; return ch; } public String myReadLine() throws IOException{//自定義readLine犯法 StringBuilder sb=new StringBuilder(); int ch=0; while((ch=myRead())!=-1){//只要還有數(shù)據(jù)就進(jìn)行讀取 if(ch=='\n')//java換行符,停止讀取,將已經(jīng)讀取到的數(shù)據(jù)輸出返回 return sb.toString(); if(ch=='\r') continue;//window下的換行符,不讀也不換行,繼續(xù)讀取后面的字符 sb.append((char)ch);//正常情況下,不斷進(jìn)行讀取 } if(sb.length()!=0)//如果文檔中中有字符,就返回讀取到的數(shù)據(jù) return sb.toString(); return null;//如果是空文檔,就返回空 } public void myClose() throws IOException{ r.close();//關(guān)閉流資源 } }
這樣就Ok了,可以進(jìn)行檢測(cè)
package day0208; import java.io.FileReader; import java.io.IOException; public class MyDemo { public static void main(String[] args) throws IOException { FileReader fw=new FileReader("C:\\demo2.txt"); MyBufferReader br=new MyBufferReader(fw); String line1=null; while((line1=br.myReadLine())!=null){ System.out.println(line1); } // int num=0; // while((num=br.myRead())!=-1){ // System.out.print((char)num); // } br.myClose(); } }
兩種檢測(cè)方法都可以。
以上這篇基于自定義BufferedReader中的read和readLine方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持創(chuàng)新互聯(lián)。
本文題目:基于自定義BufferedReader中的read和readLine方法
分享URL:http://jinyejixie.com/article48/igocep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站營(yíng)銷、品牌網(wǎng)站建設(shè)、虛擬主機(jī)、建站公司、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)