日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java readline 实现_基于自定义BufferedReader中的read和readLine方法

發(fā)布時(shí)間:2024/10/8 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java readline 实现_基于自定义BufferedReader中的read和readLine方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

實(shí)例如下所示:

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è)參考,也希望大家多多支持腳本之家。

總結(jié)

以上是生活随笔為你收集整理的java readline 实现_基于自定义BufferedReader中的read和readLine方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。