java readline 实现_基于自定义BufferedReader中的read和readLine方法
實例如下所示:
package day0208;
import java.io.FileReader;
import java.io.IOException;
/*
* 自定義讀取緩沖區,實現BufferedReader功能
* 分析:
* 緩沖區就是封裝了一個數組,并對外提供了更多的方法對數組進行訪問
* 其實這些方法最終操作的都是數組的角標
* 緩沖的原理:
* 其實就是從源中獲取一批數據裝進緩沖區,再從緩沖區取出數據
* 當此次取完后,繼續從源中取出一批數據到緩沖區
* 當源中的數據取光時,用-1作為結束標記。
*/
public class MyBufferReader {
private FileReader r;
MyBufferReader(FileReader r){
this.r=r;
}
//定義一個數組作為緩沖區
private char[] buf=new char[1024];
//定義個指針用于操作這個數組的元素,當操作到最后一個元素后,指針應該歸零
private int pos=0;
//定義一個計數器,用于記錄緩沖區中的數據個數,當該數據減到0,就從源中繼續獲取數據到緩沖區中。
private int count =0;
public int myRead() throws IOException{//自定義read方法
if(count==0){//如果緩沖區中沒有數據,則從源中獲取一批數據到緩沖區
count=r.read(buf);
pos=0;
}
if(count<0){
return -1;
}
char ch=buf[pos++];//一次從緩沖區獲取一個字符
count--;
return ch;
}
public String myReadLine() throws IOException{//自定義readLine犯法
StringBuilder sb=new StringBuilder();
int ch=0;
while((ch=myRead())!=-1){//只要還有數據就進行讀取
if(ch=='\n')//java換行符,停止讀取,將已經讀取到的數據輸出返回
return sb.toString();
if(ch=='\r')
continue;//window下的換行符,不讀也不換行,繼續讀取后面的字符
sb.append((char)ch);//正常情況下,不斷進行讀取
}
if(sb.length()!=0)//如果文檔中中有字符,就返回讀取到的數據
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方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
總結
以上是生活随笔為你收集整理的java readline 实现_基于自定义BufferedReader中的read和readLine方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么设置糖豆不自动更新?
- 下一篇: 去哪吃好吃的东西?