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

© fmi110 高级黑马   /  2015-8-6 10:58  /  214 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

IO
  1. import java.io.*;
  2. class MyBufferedReader
  3. {
  4.         private FileReader r = null;
  5.         MyBufferedReader(FileReader r){
  6.                 this.r = r;
  7.         }
  8.         public String myReadLine() throws IOException
  9.         {
  10.                 StringBuilder str = new StringBuilder();
  11.                 int ch = 0;
  12.                 while((ch=r.read())!=-1){
  13. //                        System.out.println("Hello World!");
  14.                         if(ch=='\r')
  15.                                 continue;
  16.                         if(ch=='\n')
  17.                                 return str.toString();
  18.                         else
  19.                                 str.append((char)ch);
  20.                 }
  21.                 //文件不一定都是以行分隔符结束,所以需要判断
  22.                 if(str.length()!=0)
  23.                         return str.toString();
  24.                 return null;
  25.         }
  26.         public void close() throws IOException
  27.         {
  28.                 r.close();
  29.         }
  30. }
  31. class MyLineNumberReader extends MyBufferedReader
  32. {
  33.         private int lineNumber;
  34.         MyLineNumberReader(Reader r){
  35.                 super(r);
  36.         }
  37.         public String myReadLine() throws IOException
  38.         {
  39.                 lineNumber++;
  40.                 return super.myReadLine();
  41.         }

  42.         public void setLineNumber(int num){
  43.                 this.lineNumber = num;       
  44.         }
  45.         public int getLineNumber(){
  46.                 return lineNumber;
  47.         }
  48.         public void close() throws IOException
  49.         {
  50.                 r.close();
  51.         }
  52. }
  53. /* //重写readline
  54. class MyLineNumberReader
  55. {
  56.         private Reader r;
  57.         private int lineNumber;
  58.         MyLineNumberReader(Reader r){
  59.                 this.r = r;
  60.         }

  61.         public String myReadLine() throws IOException
  62.         {
  63. //                System.out.println("Hello World!");
  64.                 lineNumber++;
  65.                 StringBuilder sb = new StringBuilder();
  66.                 int ch = 0;
  67.                 while((ch=r.read())!=-1){
  68.                         if(ch=='\r')
  69.                                 continue;
  70.                         if(ch=='\n')
  71.                                 return sb.toString();
  72.                         else
  73.                                 sb.append((char)ch);
  74.                 }
  75.                 if(sb.length()!=0)
  76.                         return sb.toString();
  77.                 return null;
  78.         }
  79.                 public void setLineNumber(int num){
  80.                 this.lineNumber = num;       
  81.         }
  82.         public int getLineNumber(){
  83.                 return lineNumber;
  84.         }
  85.         public void close() throws IOException
  86.         {
  87.                 r.close();
  88.         }
  89. }
  90. */
  91. class  MyLineNumberReaderDemo
  92. {
  93.         public static void main(String[] args) throws Exception
  94.         {
  95.                 MyLineNumberReader mylr = null;
  96.                 try
  97.                 {
  98.                         FileReader r = new FileReader("IO.java");
  99.                         mylr = new MyLineNumberReader(r);
  100.                         String str = null;
  101.                         mylr.setLineNumber(100);
  102.                         while((str=mylr.myReadLine())!=null){
  103.                                 System.out.println(mylr.getLineNumber()+": "+str);
  104.                         }
  105.                 }
  106.                 catch (IOException e)
  107.                 {
  108.                         throw new RuntimeException();
  109.                 }
  110.                 finally
  111.                 {
  112.                         if(mylr!=null)
  113.                                 mylr.close();
  114.                 }
  115.         }
  116. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马