A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package com.examp.ch18;


  2. import java.io.*;

  3. class MyBufferedReader {
  4.           private FileReader reader;
  5.           
  6.           private char[] str;
  7.           
  8.          
  9.           public MyBufferedReader(FileReader reader){
  10.                   this.reader=reader;
  11.                   this.str=new char[1024];
  12.           }
  13.           
  14.           public MyBufferedReader(Reader Filereader,int size){
  15.                   this.reader=reader;
  16.                   this.str=new char[size];
  17.           }
  18.           
  19.           
  20.           public String myReadLine() throws IOException{
  21.                      int ch=0;
  22.                      int num=0;
  23.                      while((ch=this.reader.read()) != -1){
  24.                               
  25.                                if(ch=='\r')
  26.                                        continue;
  27.                                else if(ch=='\n'){
  28.                                        return new String(str,0,num);
  29.                                }
  30.                                else{
  31.                                        str[num]=(char)ch;
  32.                                        num++;
  33.                                }
  34.                      }
  35.                      return new String(str,0,num);
  36.           }
  37.           
  38.           
  39.           public void myClose() throws IOException{
  40.                   this.reader.close();
  41.           }
  42. }
  43. public class MyBufferedReaderDemo {

  44.         public static void main(String[] args) {
  45.                 // TODO Auto-generated method stub
  46.         MyBufferedReader mbr=null;
  47.         
  48.         String fileName="E:/testmybuf.txt";
  49.         
  50.         try{
  51.                 mbr=new MyBufferedReader(new FileReader(fileName));
  52.                
  53.                 String readLine;
  54.                 while((readLine=mbr.myReadLine())!=null){
  55.                         System.out.println(readLine);
  56.                 }
  57.                 System.out.println("读取完毕!");
  58.                
  59.         }catch(IOException e){
  60.                 System.out.println("读取文件错误"+e.toString());
  61.         }finally{
  62.                 try{
  63.                         if(mbr!=null){
  64.                                 mbr.myClose();
  65.                         }
  66.                 }catch(IOException e){
  67.                         System.out.println("文件关闭时发生错误!"+e.toString());
  68.                 }
  69.         }
  70.         }

  71. }
复制代码


1 个回复

倒序浏览
找到原因了嘻嘻开心啊
  1.           public String myReadLine() throws IOException{
  2.                      int ch=0;
  3.                      int num=0;
  4.                      while((ch=this.reader.read()) != -1){
  5.                               
  6.                                if(ch == '\r')
  7.                                        continue;
  8.                                else if(ch == '\n')
  9.                                        return new String(str,0,num);
  10.                                else{
  11.                                        str[num]=(char)ch;
  12.                                        num++;
  13.                                }
  14.                      }

  15.                   //这里应该加一个判断的
  16.                      if(num!=0)
  17.                      return new String(str,0,num);
  18.                      else return null;
  19.           }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马