Package org.apache.commons.io.input
Class ReversedLinesFileReader
java.lang.Object
org.apache.commons.io.input.ReversedLinesFileReader
- All Implemented Interfaces:
Closeable
,AutoCloseable
,IOIterable<String>
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
.
For example:
try (ReversedLinesFileReader reader = ReversedLinesFileReader.builder()
.setPath(path)
.setBufferSize(4096)
.setCharset(StandardCharsets.UTF_8)
.get()) {
reader.forEach(line -> System.out.println(line));
}
- Since:
- 2.2
- See Also:
-
Nested Class Summary
Nested Classes -
Constructor Summary
ConstructorsConstructorDescriptionReversedLinesFileReader
(File file) Deprecated.ReversedLinesFileReader
(File file, int blockSize, String charsetName) Deprecated.ReversedLinesFileReader
(File file, int blockSize, Charset charset) Deprecated.ReversedLinesFileReader
(File file, Charset charset) Deprecated.ReversedLinesFileReader
(Path file, int blockSize, String charsetName) Deprecated.ReversedLinesFileReader
(Path file, int blockSize, Charset charset) Deprecated.ReversedLinesFileReader
(Path file, Charset charset) Deprecated. -
Method Summary
Modifier and TypeMethodDescriptionbuilder()
Constructs a newReversedLinesFileReader.Builder
.void
close()
Closes underlying resources.iterator()
LikeIterable.iterator()
.readLine()
Returns the lines of the file from bottom to top.readLines
(int lineCount) ReturnslineCount
lines of the file from bottom to top.toString
(int lineCount) Returns the lastlineCount
lines of the file.unwrap()
Unwraps this instance and returns the underlyingIterable
.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.commons.io.function.IOIterable
forEach, spliterator
-
Constructor Details
-
ReversedLinesFileReader
Deprecated.Constructs a ReversedLinesFileReader with default block size of 4KB and the virtual machine'sdefault charset
.- Parameters:
file
- the file to be read- Throws:
IOException
- if an I/O error occurs.
-
ReversedLinesFileReader
Deprecated.Constructs a ReversedLinesFileReader with default block size of 4KB and the specified encoding.- Parameters:
file
- the file to be readcharset
- 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.Constructs a ReversedLinesFileReader with the given block size and encoding.- Parameters:
file
- the file to be readblockSize
- 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.Constructs a ReversedLinesFileReader with the given block size and encoding.- Parameters:
file
- the file to be readblockSize
- 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 occursUnsupportedCharsetException
- if the encoding is not supported
-
ReversedLinesFileReader
Deprecated.Constructs a ReversedLinesFileReader with default block size of 4KB and the specified encoding.- Parameters:
file
- the file to be readcharset
- 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.Constructs a ReversedLinesFileReader with the given block size and encoding.- Parameters:
file
- the file to be readblockSize
- 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.Constructs a ReversedLinesFileReader with the given block size and encoding.- Parameters:
file
- the file to be readblockSize
- 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 occursUnsupportedCharsetException
- if the encoding is not supported- Since:
- 2.7
-
-
Method Details
-
builder
Constructs a newReversedLinesFileReader.Builder
.- Returns:
- a new
ReversedLinesFileReader.Builder
. - Since:
- 2.12.0
-
close
Closes underlying resources.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
- if an I/O error occurs.
-
iterator
Description copied from interface:IOIterable
LikeIterable.iterator()
.- Specified by:
iterator
in interfaceIOIterable<String>
- Returns:
- See
delegate
. - See Also:
-
readLine
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
ReturnslineCount
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
Returns the lastlineCount
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
-
unwrap
Description copied from interface:IOIterable
Unwraps this instance and returns the underlyingIterable
.Implementations may not have anything to unwrap and that behavior is undefined for now.
- Specified by:
unwrap
in interfaceIOIterable<String>
- Returns:
- the underlying Iterable.
-
builder()
,ReversedLinesFileReader.Builder
, andReversedLinesFileReader.Builder.get()