基于自定義BufferedReader中的read和readLine方法
更新時(shí)間:2017年12月15日 14:45:42 作者:fu1990@126
下面小編就為大家分享一篇基于自定義BufferedReader中的read和readLine方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
實(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è)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決idea中maven新增的配置文件xx.xml沒生效問題
這篇文章主要介紹了如何解決idea中maven新增的配置文件xx.xml沒生效問題,公司項(xiàng)目有用自己的`私服,Maven正常去私服下載jar包是沒問題的,但阿里云鏡像找不到相關(guān)的jar包報(bào)錯(cuò),文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06
JdbcTemplate方法介紹與增刪改查操作實(shí)現(xiàn)
這篇文章主要給大家介紹了關(guān)于JdbcTemplate方法與增刪改查操作實(shí)現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用JdbcTemplate具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Java將byte[]轉(zhuǎn)圖片存儲(chǔ)到本地的案例
這篇文章主要介紹了Java將byte[]轉(zhuǎn)圖片存儲(chǔ)到本地的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-10-10

