黑马程序员技术交流社区

标题: 一个报警告的问题,无视也可以编译通过。 [打印本页]

作者: 陈洋    时间: 2013-9-3 09:53
标题: 一个报警告的问题,无视也可以编译通过。
  1. package cn.itcast.io;

  2. import java.io.BufferedWriter;
  3. import java.io.FileReader;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. import java.io.Reader;

  7. public class ReadLineDemo {

  8. //        模拟readLine()读取一行的方法。
  9.         public static void main(String[] args) throws Exception {
  10.                 // TODO Auto-generated method stub
  11.                 MyBufferedReader br = new MyBufferedReader(new FileReader("a.txt"));
  12.                 BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));
  13.                 String str=null;
  14.                 while((str=br.myReadLine())!=null){
  15.                         bw.write(str);
  16.                         bw.newLine();
  17.                         bw.flush();
  18.                 }
  19.                 br.close();
  20.                 bw.close();
  21.         }

  22. }

  23. //自定义MyBufferedReader
  24. class MyBufferedReader extends Reader{
  25.         private Reader r;
  26.         public MyBufferedReader(Reader r) {
  27.                 this.r = r ;
  28.         }
  29.        
  30.         public String myReadLine() throws Exception{
  31.                
  32.                 StringBuilder sb = new StringBuilder();
  33.                 int len =0;
  34.                 while((len=r.read())!=-1){
  35.                         if(len=='\r')
  36.                                 continue;
  37.                         if(len=='\n'){
  38.                                 return sb.toString();
  39.                         }else
  40.                                 sb.append((char)len);
  41.                 }
  42.                 if(sb.length()>0)
  43.                         return sb.toString();
  44.                 return null;
  45.         }
  46.         public void close() throws IOException{
  47.                 r.close();
  48.         }
  49.        
  50.         public int read(char[] cbuf,int off,int len) throws IOException{
  51.                 return r.read(cbuf,off,len);
  52.         }
  53. }
  54. 上面的是模拟readLine的方法
  55. -------------------------------------------------
  56. 下面是模拟LineNumberReader
  57. package cn.itcast.io;

  58. import java.io.FileReader;
  59. import java.io.Reader;

  60. public class LineNumberDemo {

  61. //        模拟带行号的读取流
  62.         public static void main(String[] args) throws Exception {
  63.                
  64.                 //下面这句代码的eclipse提示警告说我这个流没有关闭,不知道为什么,如果我不自定义myclose(),直接使用父类的close(),就不会报警告。
  65.                 MyLineNumber mln = new MyLineNumber(new FileReader("a.txt"));
  66.                
  67.                 String str=null;
  68.                 while((str=mln.myReadLine())!=null){
  69.                         System.out.println(mln.getNumber()+"::"+str);
  70.                 }
  71.                 mln.myclose();
  72.         }

  73. }

  74. class MyLineNumber extends MyBufferedReader{
  75.         private int number;       
  76.         MyLineNumber(Reader r){
  77.                 super(r);
  78.         }
  79.         public void myclose() throws Exception{//我这里明明自定义myclose()调用了父类的close()
  80.                 super.close();
  81.         }
  82.         public String myReadLine() throws Exception{
  83.                 number++;
  84.                 return super.myReadLine();
  85.         }
  86.         public void setNumber(int number){
  87.                 this.number=number;
  88.         }
  89.         public int getNumber(){
  90.                 return this.number;
  91.         }
  92.        
  93. }
复制代码
问题在上面的注释处,大家帮帮我。{:soso_e117:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2