zoukankan      html  css  js  c++  java
  • Java基础之IO流,装饰设计模式的应用之行号、缓冲读取文本文件

    import java.io.*;
    class MyReaderLineNumberDemo
    {
        public static void main(String[] args) throws IOException
        {
            MyReaderLineNumber mrln = new MyReaderLineNumber("MyReaderLineNumberDemo.java");
            
            String line = null;
            mrln.setReaderLineNumber(100);
            while((line=mrln.readerLine())!=null)
            {
                System.out.println(mrln.getReaderLineNumber() +"\t"+line);
            }
            mrln.close();
        }
    }

    class MyBufferedReader
    {
        private FileReader fileReader = null;
        
        public MyBufferedReader(String fileName) throws IOException
        {
            fileReader = new FileReader(fileName);
        }
        
        public String readerLine() throws IOException
        {
            StringBuilder sb = new StringBuilder();
            int ch = 0;
            
            while((ch = fileReader.read())!=-1)
            {
                if(ch == '\r')
                    continue;
                else if(ch == '\n')
                    return sb.toString();
                else
                    sb.append((char)ch);
            }
            
            if(sb.length()!=0)
                return sb.toString();
                
            return null;
        }
        
        public void close() throws IOException
        {
            fileReader.close();
        }
    }

    class MyReaderLineNumber extends MyBufferedReader
    {
        private int readerLineNumber = 0;
        public MyReaderLineNumber(String fileName) throws IOException
        {
            super(fileName);
        }
        
        public String readerLine() throws IOException
        {        
            readerLineNumber++;
            return super.readerLine();
        }
        
        public int getReaderLineNumber()
        {
            return this.readerLineNumber;
        }
        
        public void setReaderLineNumber(int readerLineNumber)
        {
            this.readerLineNumber = readerLineNumber;
        }    
    }
  • 相关阅读:
    TCP 监控工具 TCPMonitor
    程序员职业规划
    <转>eclipse如何修改dynamic web module version .
    JBoss部属和EJB调用-EJB3.0入门经典学习笔记(2)
    环境配置与JBoss安装-EJB3.0入门经典学习笔记(1)
    【EDA】PCBA丝印尺寸
    【Altium Designer】PCB如何用规则检查
    【Cadence】Gerber之二:钻孔文件设置与生成
    【生产】如何设计生产线
    【EMC】脉冲群Burst
  • 原文地址:https://www.cnblogs.com/cxmsky/p/2883087.html
Copyright © 2011-2022 走看看