Package org.apache.commons.io.input

# Class ReversedLinesFileReader

java.lang.Object
org.apache.commons.io.input.ReversedLinesFileReader

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

public class ReversedLinesFileReader extends Object implements 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.

To build an instance, use `ReversedLinesFileReader.Builder`.

Since:
  2.2
See Also:
  - `ReversedLinesFileReader.Builder`

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `ReversedLinesFileReader.Builder`
  Builds a new `ReversedLinesFileReader`.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ReversedLinesFileReader(File file)`
  Deprecated.
  Use `builder()`, `ReversedLinesFileReader.Builder`, and `ReversedLinesFileReader.Builder.get()`
  `ReversedLinesFileReader(File file, int blockSize, String charsetName)`
  Deprecated.
  Use `builder()`, `ReversedLinesFileReader.Builder`, and `ReversedLinesFileReader.Builder.get()`
  `ReversedLinesFileReader(File file, int blockSize, Charset charset)`
  Deprecated.
  Use `builder()`, `ReversedLinesFileReader.Builder`, and `ReversedLinesFileReader.Builder.get()`
  `ReversedLinesFileReader(File file, Charset charset)`
  Deprecated.
  Use `builder()`, `ReversedLinesFileReader.Builder`, and `ReversedLinesFileReader.Builder.get()`
  `ReversedLinesFileReader(Path file, int blockSize, String charsetName)`
  Deprecated.
  Use `builder()`, `ReversedLinesFileReader.Builder`, and `ReversedLinesFileReader.Builder.get()`
  `ReversedLinesFileReader(Path file, int blockSize, Charset charset)`
  Deprecated.
  Use `builder()`, `ReversedLinesFileReader.Builder`, and `ReversedLinesFileReader.Builder.get()`
  `ReversedLinesFileReader(Path file, Charset charset)`
  Deprecated.
  Use `builder()`, `ReversedLinesFileReader.Builder`, and `ReversedLinesFileReader.Builder.get()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static ReversedLinesFileReader.Builder`
  `builder()`
  Constructs a new `ReversedLinesFileReader.Builder`.
  `void`
  `close()`
  Closes underlying resources.
  `String`
  `readLine()`
  Returns the lines of the file from bottom to top.
  `List<String>`
  `readLines(int lineCount)`
  Returns `lineCount` lines of the file from bottom to top.
  `String`
  `toString(int lineCount)`
  Returns the last `lineCount` lines of the file.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### ReversedLinesFileReader

    @Deprecated public ReversedLinesFileReader(File file) throws IOException
    Deprecated.
    Use `builder()`, `ReversedLinesFileReader.Builder`, and `ReversedLinesFileReader.Builder.get()`
    Constructs a ReversedLinesFileReader with default block size of 4KB and the platform's default encoding.
    Parameters:
      `file` - the file to be read
    Throws:
      `IOException` - if an I/O error occurs.

  - ### ReversedLinesFileReader

    @Deprecated public ReversedLinesFileReader(File file, Charset charset) throws IOException
    Deprecated.
    Use `builder()`, `ReversedLinesFileReader.Builder`, and `ReversedLinesFileReader.Builder.get()`
    Constructs 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:
      `IOException` - if an I/O error occurs.
    Since:
      2.5

  - ### ReversedLinesFileReader

    @Deprecated public ReversedLinesFileReader(File file, int blockSize, Charset charset) throws IOException
    Deprecated.
    Use `builder()`, `ReversedLinesFileReader.Builder`, and `ReversedLinesFileReader.Builder.get()`
    Constructs 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:
      `IOException` - if an I/O error occurs.
    Since:
      2.3

  - ### ReversedLinesFileReader

    @Deprecated public ReversedLinesFileReader(File file, int blockSize, String charsetName) throws IOException
    Deprecated.
    Use `builder()`, `ReversedLinesFileReader.Builder`, and `ReversedLinesFileReader.Builder.get()`
    Constructs 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:
      `IOException` - if an I/O error occurs
      `UnsupportedCharsetException` - if the encoding is not supported

  - ### ReversedLinesFileReader

    @Deprecated public ReversedLinesFileReader(Path file, Charset charset) throws IOException
    Deprecated.
    Use `builder()`, `ReversedLinesFileReader.Builder`, and `ReversedLinesFileReader.Builder.get()`
    Constructs 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:
      `IOException` - if an I/O error occurs.
    Since:
      2.7

  - ### ReversedLinesFileReader

    @Deprecated public ReversedLinesFileReader(Path file, int blockSize, Charset charset) throws IOException
    Deprecated.
    Use `builder()`, `ReversedLinesFileReader.Builder`, and `ReversedLinesFileReader.Builder.get()`
    Constructs 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:
      `IOException` - if an I/O error occurs.
    Since:
      2.7

  - ### ReversedLinesFileReader

    @Deprecated public ReversedLinesFileReader(Path file, int blockSize, String charsetName) throws IOException
    Deprecated.
    Use `builder()`, `ReversedLinesFileReader.Builder`, and `ReversedLinesFileReader.Builder.get()`
    Constructs 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:
      `IOException` - if an I/O error occurs
      `UnsupportedCharsetException` - if the encoding is not supported
    Since:
      2.7

- ## Method Details

  - ### builder

    public static ReversedLinesFileReader.Builder builder()
    Constructs a new `ReversedLinesFileReader.Builder`.
    Returns:
      a new `ReversedLinesFileReader.Builder`.
    Since:
      2.12.0

  - ### close

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

  - ### readLine

    public String readLine() throws 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:
      `IOException` - if an I/O error occurs.

  - ### readLines

    public List<String> readLines(int lineCount) throws 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:
      `IOException` - if an I/O error occurs.
    Since:
      2.8.0

  - ### toString

    public String toString(int lineCount) throws 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:
      `IOException` - if an I/O error occurs.
    Since:
      2.8.0