基于自定義BufferedReader中的read和readLine方法

實(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)行訪問
 * 其實(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ū)中沒有數(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://bm7419.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í)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)