国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Java > 正文

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

2024-07-13 10:14:46
字體:
來源:轉載
供稿:網(wǎng)友

實例如下所示:

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方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網(wǎng)。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 霍州市| 屏东市| 诸暨市| 西充县| 广宁县| 名山县| 霍林郭勒市| 文登市| 双江| 海城市| 台江县| 车致| 定边县| 左权县| 白银市| 武乡县| 上高县| 西华县| 黄浦区| 龙胜| 镇远县| 兴化市| 门源| 清水河县| 南投县| 宜兴市| 绍兴市| 柯坪县| 桦南县| 洞头县| 汾阳市| 泽普县| 赞皇县| 陇西县| 巫溪县| 紫金县| 财经| 香河县| 南丰县| 沾益县| 河池市|