• Java基础之IO流,按指定行号范围读取文本文件内容,带行业、带缓冲


    import java.io.*;

    class MyReaderLineNumberDemo
    {
        public static void main(String[] args)
        {
            MyReaderForLineNumber mrln = null;
            try
            {
                mrln = new MyReaderForLineNumber("MyReaderLineNumberDemo.java");
            
                String line = null;
                mrln.setStartLineNumber(1);
                mrln.setEndLineNumber(-1);
                while((line=mrln.readLine())!=null)
                {
                    System.out.println(mrln.getLineNumber() +":"+ line);
                }
            }
            catch(IOException e)
            {
                System.err.println(e.getMessage());
            }
            finally
            {
                try
                {
                    if(null!=mrln)
                        mrln.close();
                }
                catch(IOException e)
                {
                    System.err.println(e.getMessage());
                }
            }
        }
    }

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

    class MyReaderLineNumber extends MyBufferedReader
    {
        private int lineNumber = 0;
        
        public MyReaderLineNumber(String fileName)  throws IOException
        {
            super(fileName);
        }
        
        public String readLine()  throws IOException
        {
            lineNumber++;
            return super.readLine();
        }
        
        public void setLineNumber(int lineNumber)
        {
            this.lineNumber = lineNumber;
        }
        
        public int getLineNumber()
        {
            return lineNumber;
        }
    }

    class MyReaderForLineNumber extends MyReaderLineNumber
    {
        private int startLineNumber = 0;
        private int endLineNumber = Integer.MAX_VALUE;
        
        public MyReaderForLineNumber(String fileName) throws IOException
        {
            super(fileName);
        }
        
        public String readLine()  throws IOException
        {    
            String result = null;
            while((result=super.readLine())!=null)
            {
                if(super.getLineNumber()>=this.startLineNumber && this.endLineNumber>=super.getLineNumber())
                    return result;
            }
            
            return null;
        }
        
        public int getStartLineNumber()
        {
            return this.startLineNumber;
        }
        
        public void setStartLineNumber(int s)
        {
            if(s>=0)
                this.startLineNumber = s;
        }
        
        public int getEndLineNumber()
        {
            return this.endLineNumber;
        }
        
        public void setEndLineNumber(int e)
        {
            if(e>0)
                this.endLineNumber = e;
            
        }
    }
  • 相关阅读:
    1386. 安排电影院座位
    1123. 最深叶节点的最近公共祖先
    375. 猜数字大小 II
    未能在system.drawing中找到bitmap
    856. 括号的分数
    140. 单词拆分 II
    5909. 并行课程 III
    typora + ImgHosting (一款不会存储图片的图床实现)
    IDEA插件:search with bing、search with baidu
    多吉搜索美化
  • 原文地址:https://www.cnblogs.com/cxmsky/p/2886379.html
Copyright © 2020-2023  润新知