zoukankan      html  css  js  c++  java
  • 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;
            
        }
    }
  • 相关阅读:
    [LeetCode] 456. 132 Pattern
    [LeetCode] 606. Construct String from Binary Tree
    [LeetCode] 536. Construct Binary Tree from String
    [LeetCode] 925. Long Pressed Name
    [LeetCode] 652. Find Duplicate Subtrees
    [LeetCode] 743. Network Delay Time
    [LeetCode] 1209. Remove All Adjacent Duplicates in String II
    [LeetCode] 1047. Remove All Adjacent Duplicates In String
    [LeetCode] 1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit
    [LeetCode] 859. Buddy Strings
  • 原文地址:https://www.cnblogs.com/cxmsky/p/2886379.html
Copyright © 2011-2022 走看看