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

自定義BufferedReader的實例

 更新時間:2017年12月15日 14:32:49   作者:咯咯咯咯噠  
下面小編就為大家分享一篇自定義BufferedReader的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

緩沖區(qū)的建立目的就是增加傳輸性能,使我們傳輸數(shù)據(jù)更加快速

緩沖區(qū)的內(nèi)部其實很簡單 就是在內(nèi)部封裝了一個數(shù)組 用數(shù)組來存儲數(shù)據(jù) 對外提供一些方法對數(shù)組進行訪問

其中這些方法的操作就是對數(shù)組的指針(角標(biāo))。

緩沖區(qū)的原理:從源中獲取一批數(shù)據(jù)到緩沖區(qū),再從緩沖區(qū)中一個一個取出 取完后用-1作為結(jié)束標(biāo)記

在BufferedReader中我們讀取數(shù)據(jù)方法有read() ,readLine()

read() 其參數(shù)為char[],cbuf,int off,int len。其返回值為-1

readLine()方法是一行一行的取 其內(nèi)部就像是一個字符串容器StringBuffder 其返回值為null;

首先定義一個類 在類中定義兩個讀取數(shù)據(jù)的方法 MyReader(),MyReadLine();

public class MyBufferedReader {
 private FileReader fr;
 
 private char[] buff = new char[1024];
 
 private int zz = 0;
 
 private int count = 0;
 
 MyBufferedReader(FileReader fr){
  this.fr = fr;
 }
 
 public int MyRead() throws IOException{
 if(count==0){
  count = fr.read(buff);
   zz =0;
 }
 if(count<0)
  return -1;
 
 char ch = buff[zz++];
 
 count--;
 return ch;
 
}
 public String MyReadLine() throws IOException{
  StringBuilder stb = new StringBuilder();
   
  int ch = 0;
  while((ch=MyRead())!=-1){
   
   if(ch=='\r')
    continue;
   if(ch=='\n')
    return stb.toString();
   
   stb.append((char)ch);
   
  }
  if(stb.length()!=0)
   return stb.toString();
  return null;
 }
 public void MyClose() throws IOException{
  fr.close();
 }
}

里面我定義了指針zz 和一個緩沖區(qū)計數(shù)器count來記錄緩沖區(qū)內(nèi)讀取數(shù)據(jù)的變化

當(dāng)count==0時 就往緩沖區(qū)內(nèi)讀入數(shù)據(jù) zz為0 從第一個數(shù)開始讀

小于0時數(shù)據(jù)讀取完畢 返回-1

在MyReadLine()中 創(chuàng)建一個字符串容器StringBuilder 來存儲數(shù)據(jù)黨stb==\n時 一行讀取完畢其返回值為null;

以上這篇自定義BufferedReader的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaEE微框架Spring Boot深入解讀

    JavaEE微框架Spring Boot深入解讀

    spring框架作為JavaEE框架領(lǐng)域的一款重要的開源框架,在企業(yè)應(yīng)用開發(fā)中有著很重要的作用。接下來通過本文給大家介紹JavaEE微框架Spring Boot深入解讀,需要的朋友可以參考下
    2017-04-04
  • 詳細介紹Java中的各種鎖

    詳細介紹Java中的各種鎖

    不少同學(xué)開始慢慢接觸多線時候,對線程之間為了保障數(shù)據(jù)安全性,一致性有所了解,本文詳細解介紹java中的21種鎖 ,需要的朋友可以參考下
    2021-06-06
  • 基于kafka實現(xiàn)Spring Cloud Bus消息總線

    基于kafka實現(xiàn)Spring Cloud Bus消息總線

    消息總線是一種通信工具,可以在機器之間互相傳輸消息、文件等,這篇文章主要介紹了如何利用kafka實現(xiàn)SpringCloud Bus消息總線,感興趣的可以學(xué)習(xí)一下
    2022-04-04
  • MyBatis的<foreach>以及java代碼的批處理方式

    MyBatis的<foreach>以及java代碼的批處理方式

    這篇文章主要介紹了MyBatis的<foreach>以及java代碼的批處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • springboot 錯誤處理小結(jié)

    springboot 錯誤處理小結(jié)

    在 java web開發(fā)過程中,難免會有一些系統(tǒng)異?;蛉藶楫a(chǎn)生一些異常。在 RESTful springboot 項目中如何優(yōu)雅的處理?下面腳本之家小編給大家?guī)砹藄pringboot 錯誤處理小結(jié),感興趣的朋友一起看看吧
    2018-03-03
  • Quarkus集成Dubbo服務(wù)Rpc遠程通訊框架整合

    Quarkus集成Dubbo服務(wù)Rpc遠程通訊框架整合

    這篇文章主要為大家介紹了Quarkus集成Dubbo服務(wù)Rpc遠程通訊框架的整合,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-02-02
  • idea運行程序報錯java程序包org.junit不存在解決辦法

    idea運行程序報錯java程序包org.junit不存在解決辦法

    這篇文章主要給大家介紹了關(guān)于idea運行程序報錯java程序包org.junit不存在的解決辦法, 當(dāng)出現(xiàn)程序包org.junit不存在的問題時,可以通過使用適當(dāng)?shù)腏Unit版本、添加依賴或重新下載程序包等方式進行解決,需要的朋友可以參考下
    2024-02-02
  • Java基于分治算法實現(xiàn)的線性時間選擇操作示例

    Java基于分治算法實現(xiàn)的線性時間選擇操作示例

    這篇文章主要介紹了Java基于分治算法實現(xiàn)的線性時間選擇操作,涉及java排序、比較、計算等相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • java 中HashMap、HashSet、TreeMap、TreeSet判斷元素相同的幾種方法比較

    java 中HashMap、HashSet、TreeMap、TreeSet判斷元素相同的幾種方法比較

    這篇文章主要介紹了從源碼的角度淺析HashMap、TreeMap元素的存儲和獲取元素的邏輯;從Map與Set之間的關(guān)系淺析常用的Set中元素的存儲和判斷是否重復(fù)的邏輯,需要的朋友可以參考下
    2017-01-01
  • java項目導(dǎo)出為.exe執(zhí)行文件的方法步驟

    java項目導(dǎo)出為.exe執(zhí)行文件的方法步驟

    最近做了個項目,想要轉(zhuǎn)換成可執(zhí)行文件,那么java項目如何導(dǎo)出為.exe執(zhí)行文件,本文就介紹一下,主要使用jar2exe軟件,感興趣的可以了解一下
    2021-05-05

最新評論