实现自己的readline方法

简介: 用代码来自己实现BufferedReader中的readline方法

用代码来自己实现BufferedReader中的readline方法:

package ioDemo;
import java.io.FileReader;
import java.io.IOException;
class MyBufferedReader{
  private FileReader r;
  //在对象建立的时候就应该有一个FileReader对象传进来
  MyBufferedReader(FileReader r){
    this.r = r;
  }
  //定义自己的readline方法
  public String myReadline() throws IOException{
    //定义一个临时容器,原BufferReader封装的是字符数组
    //为了方便,我们定义一个StringBuilder容器,因为还是最终还是要将数据变成字符串。
    StringBuilder sb = new StringBuilder();
    int ch = 0;
    while((ch=r.read())!=-1) {
      //Windows的换行符是\r\n,如果读到\r就不往容器里面添加,如果读到\n就说明这一行结束了,就把容器中的数据变成字符串返回。
      if(ch=='\r') {
        continue;
      }
      if(ch=='\n') {
        return sb.toString();
      }else {
        sb.append((char)ch);
      }
    }
    //如果最后一行没有换行符,就不会把这一行返回。所以在这里再加一个判断;
    if(sb.length()!=0) {
      return sb.toString();
    }
    return null;
  }
  //关闭流方法
  public void myClose() throws IOException{
    r.close();
  }
}
public class ReadlineTest {
  public static void main(String[] args) {
    MyBufferedReader mbr = null;
    try {
      mbr = new MyBufferedReader(new FileReader("abc.txt"));
      String line = null;
      while((line=mbr.myReadline())!=null) {
        System.out.println(line);
      }
    } catch (IOException e) {
      // TODO: handle exception
      System.out.println(e.toString());
    } finally {
      try {
        if(mbr!=null) {
          mbr.myClose();
        }
      } catch (IOException e2) {
        // TODO: handle exception
        System.out.println(e2.toString());
      }
    }
  }
}
相关文章
File操作-FileReader(FileWriter)/BufferedReader(Writer)
File操作-FileReader(FileWriter)/BufferedReader(Writer)
55 0
Python文件读取方法:read()、readline()和readlines()的区别
Python文件读取方法:read()、readline()和readlines()的区别
|
Python
轻松读取大文件:Python中read()、readline()和readlines()技巧大揭秘
轻松读取大文件:Python中read()、readline()和readlines()技巧大揭秘
203 0
C#中console.read()和console.readline()
C#中console.read()和console.readline()
102 0
|
存储 缓存 Java
【Java I/O 流】字符输入输出流:Reader 和 Writer
前面我们已经学会了字节流的使用,本篇开始介绍字符流。字符输入输出流是所有字符流的超类,学会了它们的方法,也基本上掌握了其子类的使用了。
134 0
|
Python
Python中read()、readline()和readlines()三者间的区别和用法
Python中read()、readline()和readlines()三者间的区别和用法
163 0
|
存储 Linux Python
Python文件相关知识点strip、open、read、write、close、readline、readlines、encoding、encode、decode
文件的作用: 可以永久的保存数据. 文件在硬盘中存储的格式是二进制. 打开文件 读写文件 关闭文件 打开文件, 是文件从硬盘中存到内存中 open(file, mode=‘r’, encoding) file 要操作的文件名字, 类型是 str mode, 文件打开的方式, r(read) 只读打开, w(write) 只写打开 a(append) 追加打开 encoding 文件的编码格式, 常见的编码格式有两种, 一种是gbk, 一种是utf-8 返回值, 文件对象, 后续所有的文件操作,都需要通
356 1
Python文件相关知识点strip、open、read、write、close、readline、readlines、encoding、encode、decode
lua.c:82:10: fatal error: readline/readline.h: 没有那个文件或目录
lua.c:82:10: fatal error: readline/readline.h: 没有那个文件或目录
85 0
|
移动开发 Java 数据处理