欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年12月15日 14:45:42   作者:fu1990@126  
下面小編就為大家分享一篇基于自定義BufferedReader中的read和readLine方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

實例如下所示:

package day0208;
 
import java.io.FileReader;
import java.io.IOException;
 
/*
 * 自定義讀取緩沖區(qū),實現(xiàn)BufferedReader功能
 * 分析:
 * 緩沖區(qū)就是封裝了一個數(shù)組,并對外提供了更多的方法對數(shù)組進行訪問
 * 其實這些方法最終操作的都是數(shù)組的角標
 * 緩沖的原理:
 * 其實就是從源中獲取一批數(shù)據(jù)裝進緩沖區(qū),再從緩沖區(qū)取出數(shù)據(jù)
 * 當此次取完后,繼續(xù)從源中取出一批數(shù)據(jù)到緩沖區(qū)
 * 當源中的數(shù)據(jù)取光時,用-1作為結束標記。
 */
public class MyBufferReader {
    private FileReader r;
    MyBufferReader(FileReader r){
       this.r=r;
    }
    //定義一個數(shù)組作為緩沖區(qū)
    private char[] buf=new char[1024];
    //定義個指針用于操作這個數(shù)組的元素,當操作到最后一個元素后,指針應該歸零
    private int pos=0;
    //定義一個計數(shù)器,用于記錄緩沖區(qū)中的數(shù)據(jù)個數(shù),當該數(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ū)獲取一個字符
       count--;
       return ch;
    }
    public String myReadLine() throws IOException{//自定義readLine犯法
       StringBuilder sb=new StringBuilder();
       int ch=0;
       while((ch=myRead())!=-1){//只要還有數(shù)據(jù)就進行讀取
           if(ch=='\n')//java換行符,停止讀取,將已經(jīng)讀取到的數(shù)據(jù)輸出返回
              return sb.toString();
           if(ch=='\r')
              continue;//window下的換行符,不讀也不換行,繼續(xù)讀取后面的字符
           sb.append((char)ch);//正常情況下,不斷進行讀取
       }
       if(sb.length()!=0)//如果文檔中中有字符,就返回讀取到的數(shù)據(jù)
           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方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Linux?Ubuntu系統(tǒng)下配置JDK環(huán)境、MySQL環(huán)境全過程

    Linux?Ubuntu系統(tǒng)下配置JDK環(huán)境、MySQL環(huán)境全過程

    眾所周知Ubuntu是一種基于Linux的操作系統(tǒng),它提供了一個穩(wěn)定、安全和易于使用的環(huán)境,下面這篇文章主要給大家介紹了關于Linux?Ubuntu系統(tǒng)下配置JDK環(huán)境、MySQL環(huán)境的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • Java面向對象三大特性及多態(tài)解析

    Java面向對象三大特性及多態(tài)解析

    這篇文章主要介紹了Java面向對象三大特性及多態(tài)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • java優(yōu)化if-else的11種方案

    java優(yōu)化if-else的11種方案

    If-Else結構是一種常見的條件判斷語句,通過優(yōu)化If-Else結構,可以提高代碼的可讀性和執(zhí)行效率,本文主要介紹了java優(yōu)化if-else的11種方案,感興趣的可以了解一下
    2024-08-08
  • Jenkins初級應用之Invoke?Phing?targets插件配置

    Jenkins初級應用之Invoke?Phing?targets插件配置

    這篇文章主要為大家介紹了Jenkins初級應用之Invoke?Phing?targets的插件配置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪<BR>
    2022-04-04
  • springsecurity 企業(yè)微信登入的實現(xiàn)示例

    springsecurity 企業(yè)微信登入的實現(xiàn)示例

    本文主要介紹了springsecurity 企業(yè)微信登入的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • 最新評論