Class ReversedLinesFileReader

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public class ReversedLinesFileReader
    extends java.lang.Object
    implements java.io.Closeable
    Reads lines in a file reversely (similar to a BufferedReader, but starting at the last line). Useful for e.g. searching in log files.
    Since:
    2.2
    • Constructor Summary

      Constructors 
      Constructor Description
      ReversedLinesFileReader​(java.io.File file)
      Deprecated.
      ReversedLinesFileReader​(java.io.File file, int blockSize, java.lang.String charsetName)
      Creates a ReversedLinesFileReader with the given block size and encoding.
      ReversedLinesFileReader​(java.io.File file, int blockSize, java.nio.charset.Charset charset)
      Creates a ReversedLinesFileReader with the given block size and encoding.
      ReversedLinesFileReader​(java.io.File file, java.nio.charset.Charset charset)
      Creates a ReversedLinesFileReader with default block size of 4KB and the specified encoding.
      ReversedLinesFileReader​(java.nio.file.Path file, int blockSize, java.lang.String charsetName)
      Creates a ReversedLinesFileReader with the given block size and encoding.
      ReversedLinesFileReader​(java.nio.file.Path file, int blockSize, java.nio.charset.Charset charset)
      Creates a ReversedLinesFileReader with the given block size and encoding.
      ReversedLinesFileReader​(java.nio.file.Path file, java.nio.charset.Charset charset)
      Creates a ReversedLinesFileReader with default block size of 4KB and the specified encoding.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Closes underlying resources.
      java.lang.String readLine()
      Returns the lines of the file from bottom to top.
      java.util.List<java.lang.String> readLines​(int lineCount)
      Returns lineCount lines of the file from bottom to top.
      java.lang.String toString​(int lineCount)
      Returns the last lineCount lines of the file.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ReversedLinesFileReader

        @Deprecated
        public ReversedLinesFileReader​(java.io.File file)
                                throws java.io.IOException
        Deprecated.
        Creates a ReversedLinesFileReader with default block size of 4KB and the platform's default encoding.
        Parameters:
        file - the file to be read
        Throws:
        java.io.IOException - if an I/O error occurs.
      • ReversedLinesFileReader

        public ReversedLinesFileReader​(java.io.File file,
                                       java.nio.charset.Charset charset)
                                throws java.io.IOException
        Creates a ReversedLinesFileReader with default block size of 4KB and the specified encoding.
        Parameters:
        file - the file to be read
        charset - the charset to use, null uses the default Charset.
        Throws:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.5
      • ReversedLinesFileReader

        public ReversedLinesFileReader​(java.io.File file,
                                       int blockSize,
                                       java.nio.charset.Charset charset)
                                throws java.io.IOException
        Creates a ReversedLinesFileReader with the given block size and encoding.
        Parameters:
        file - the file to be read
        blockSize - size of the internal buffer (for ideal performance this should match with the block size of the underlying file system).
        charset - the encoding of the file, null uses the default Charset.
        Throws:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.3
      • ReversedLinesFileReader

        public ReversedLinesFileReader​(java.io.File file,
                                       int blockSize,
                                       java.lang.String charsetName)
                                throws java.io.IOException
        Creates a ReversedLinesFileReader with the given block size and encoding.
        Parameters:
        file - the file to be read
        blockSize - size of the internal buffer (for ideal performance this should match with the block size of the underlying file system).
        charsetName - the encoding of the file, null uses the default Charset.
        Throws:
        java.io.IOException - if an I/O error occurs
        java.nio.charset.UnsupportedCharsetException - thrown instead of UnsupportedEncodingException in version 2.2 if the encoding is not supported.
      • ReversedLinesFileReader

        public ReversedLinesFileReader​(java.nio.file.Path file,
                                       java.nio.charset.Charset charset)
                                throws java.io.IOException
        Creates a ReversedLinesFileReader with default block size of 4KB and the specified encoding.
        Parameters:
        file - the file to be read
        charset - the charset to use, null uses the default Charset.
        Throws:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.7
      • ReversedLinesFileReader

        public ReversedLinesFileReader​(java.nio.file.Path file,
                                       int blockSize,
                                       java.nio.charset.Charset charset)
                                throws java.io.IOException
        Creates a ReversedLinesFileReader with the given block size and encoding.
        Parameters:
        file - the file to be read
        blockSize - size of the internal buffer (for ideal performance this should match with the block size of the underlying file system).
        charset - the encoding of the file, null uses the default Charset.
        Throws:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.7
      • ReversedLinesFileReader

        public ReversedLinesFileReader​(java.nio.file.Path file,
                                       int blockSize,
                                       java.lang.String charsetName)
                                throws java.io.IOException
        Creates a ReversedLinesFileReader with the given block size and encoding.
        Parameters:
        file - the file to be read
        blockSize - size of the internal buffer (for ideal performance this should match with the block size of the underlying file system).
        charsetName - the encoding of the file, null uses the default Charset.
        Throws:
        java.io.IOException - if an I/O error occurs
        java.nio.charset.UnsupportedCharsetException - thrown instead of UnsupportedEncodingException in version 2.2 if the encoding is not supported.
        Since:
        2.7
    • Method Detail

      • close

        public void close()
                   throws java.io.IOException
        Closes underlying resources.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException - if an I/O error occurs.
      • readLine

        public java.lang.String readLine()
                                  throws java.io.IOException
        Returns the lines of the file from bottom to top.
        Returns:
        the next line or null if the start of the file is reached
        Throws:
        java.io.IOException - if an I/O error occurs.
      • readLines

        public java.util.List<java.lang.String> readLines​(int lineCount)
                                                   throws java.io.IOException
        Returns lineCount lines of the file from bottom to top.

        If there are less than lineCount lines in the file, then that's what you get.

        Note: You can easily flip the result with Collections.reverse(List).

        Parameters:
        lineCount - How many lines to read.
        Returns:
        A new list
        Throws:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.8.0
      • toString

        public java.lang.String toString​(int lineCount)
                                  throws java.io.IOException
        Returns the last lineCount lines of the file.

        If there are less than lineCount lines in the file, then that's what you get.

        Parameters:
        lineCount - How many lines to read.
        Returns:
        A String.
        Throws:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.8.0