亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-09-04 23:34:03 來源:腳本之家 閱讀:233 作者:fu1990@126 欄目:編程語言

實例如下所示:

package day0208;
 
import java.io.FileReader;
import java.io.IOException;
 
/*
 * 自定義讀取緩沖區,實現BufferedReader功能
 * 分析:
 * 緩沖區就是封裝了一個數組,并對外提供了更多的方法對數組進行訪問
 * 其實這些方法最終操作的都是數組的角標
 * 緩沖的原理:
 * 其實就是從源中獲取一批數據裝進緩沖區,再從緩沖區取出數據
 * 當此次取完后,繼續從源中取出一批數據到緩沖區
 * 當源中的數據取光時,用-1作為結束標記。
 */
public class MyBufferReader {
    private FileReader r;
    MyBufferReader(FileReader r){
       this.r=r;
    }
    //定義一個數組作為緩沖區
    private char[] buf=new char[1024];
    //定義個指針用于操作這個數組的元素,當操作到最后一個元素后,指針應該歸零
    private int pos=0;
    //定義一個計數器,用于記錄緩沖區中的數據個數,當該數據減到0,就從源中繼續獲取數據到緩沖區中。
    private int count =0;
    public int myRead() throws IOException{//自定義read方法
       if(count==0){//如果緩沖區中沒有數據,則從源中獲取一批數據到緩沖區
           count=r.read(buf);
           pos=0;
       }
       if(count<0){
           return -1;
       }
       char ch=buf[pos++];//一次從緩沖區獲取一個字符
       count--;
       return ch;
    }
    public String myReadLine() throws IOException{//自定義readLine犯法
       StringBuilder sb=new StringBuilder();
       int ch=0;
       while((ch=myRead())!=-1){//只要還有數據就進行讀取
           if(ch=='\n')//java換行符,停止讀取,將已經讀取到的數據輸出返回
              return sb.toString();
           if(ch=='\r')
              continue;//window下的換行符,不讀也不換行,繼續讀取后面的字符
           sb.append((char)ch);//正常情況下,不斷進行讀取
       }
       if(sb.length()!=0)//如果文檔中中有字符,就返回讀取到的數據
           return sb.toString();
       return null;//如果是空文檔,就返回空
    }
    public void myClose() throws IOException{
       r.close();//關閉流資源
    }
}

這樣就Ok了,可以進行檢測

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();
  }
}

兩種檢測方法都可以。

以上這篇基于自定義BufferedReader中的read和readLine方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海宁市| 常熟市| 城市| 清河县| 巴彦淖尔市| 武冈市| 武隆县| 鄂州市| 平陆县| 三穗县| 鄂伦春自治旗| 长子县| 德阳市| 五家渠市| 凤冈县| 西宁市| 通海县| 宿松县| 黔江区| 武强县| 丽水市| 邵武市| 淳化县| 江川县| 哈密市| 镇安县| 大荔县| 海丰县| 满洲里市| 安吉县| 辛集市| 寿阳县| 施秉县| 洛宁县| 太仓市| 吴旗县| 汶上县| 邢台县| 罗定市| 苗栗县| 伊川县|