自定义BufferedRwader里面的readLine()方法和BufferedWriter里面的newLine()方法

     

    我自己模拟做了一个BufferedRwader里面的readLine()方法和BufferedWriter里面的newLine()方法。其实readLine()跟newLine()最终都是要一个一个字符的读取(通过read()),遇到换行符的时候,才返回一个字符串。最后执行完后,要关闭资源,也就是关闭流。下面代码中的myReaderOnline()方法是自定义读一行的方法,myNewLine()是自定义一个写一行的方法。具体的实现过程请看代码:

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
* 明白BufferedRwader类中特有的readLine的原理后 自定义一个类中包含一个功能跟readLine方法一致
* 我自己模拟做了一个BufferedRwader里面的readLine()方法和BufferedWriter里面的newLine()方法
* @author zcq
*
*/
public class MyBuffereReader {

/**
  * @param args
  * @throws IOException
  */
public static void main(String[] args) throws IOException {
  FileReader filereader = new FileReader("D:\\ReaderFile.java");//指定要读取文件的路径
  FileWriter write = new FileWriter("D:\\MyBufferedDemo_1.txt");//指定要把读取的文件写到哪一个文件中
  MyBufferedDemo my = new MyBufferedDemo(filereader,write);
  String line = null;
  while ((line = my.myReaderOnline()) != null) {

   System.out.println(line);
  }
  String l =null;
  while((l=my.myNewLine())!=null){
   write.write(l, 0, l.length());
  }
  my.readerclose();
  my.writeclose();
}

public static class MyBufferedDemo {
  FileReader reader=null;
  FileWriter write=null;
  public MyBufferedDemo(FileReader reader,FileWriter write) {
   this.reader = reader;
   this.write = write;
  }
  /**
   * 自定义读一行的方法
   * @return
   * @throws IOException
   */
  public String myReaderOnline() throws IOException {
//   定义一个StringBuilder容器,因为最终还是要将数据变成字符串
   StringBuilder builder = new StringBuilder();
   int len = 0;
   while ((len = reader.read()) != -1) {
    if (len == '\r')
     continue;

    if (len == '\n')
     return builder.toString();
    else
     builder.append((char) len);

   }
   if (builder.length() != 0) {
    return builder.toString();
   }
   return null;
  }
  
  /**
   * 自定义一个写一行的方法:"\r\n"就是一个换行符,用来代替读取一行
   * @throws IOException
   */
  public String myNewLine() throws IOException{
   StringBuilder builer = new StringBuilder();
   int len = 0;
   while((len = reader.read())!=-1){
    if(len=='\r')
     continue;
    if(len=='\n')
     return builer.toString();
    else
     builer.append((char)len);
   }
   if(builer.length()!=0){
    return builer.toString();
   }
   return null;
  }
  /**
   * 关闭读取流
   * @throws IOException
   */
  public void readerclose() throws IOException {
   reader.close();
  }
  /**
   * 关闭写入流
   * @throws IOException
   */
  public void writeclose() throws IOException{
   write.close();
  }
}

}

以上供大家参考,如果有比较好的方法,我们可以互相交流一下。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值