org.apache.commons.io

Class LineIterator

public class LineIterator extends Object implements Iterator

An Iterator over the lines in a Reader.

LineIterator holds a reference to an open Reader. When you have finished with the iterator you should close the reader to free internal resources. This can be done by closing the reader directly, or by calling the close or closeQuietly method on the iterator.

The recommended usage pattern is:

 LineIterator it = FileUtils.lineIterator(file, "UTF-8");
 try {
   while (it.hasNext()) {
     String line = it.nextLine();
     /// do something with line
   }
 } finally {
   LineIterator.closeQuietly(iterator);
 }
 

Since: Commons IO 1.2

Version: $Id: LineIterator.java 437567 2006-08-28 06:39:07Z bayard $

Author: Niall Pemberton Stephen Colebourne Sandy McArthur

Field Summary
BufferedReaderbufferedReader
The reader that is being read.
StringcachedLine
The current line.
booleanfinished
A flag indicating if the iterator has been fully read.
Constructor Summary
LineIterator(Reader reader)
Constructs an iterator of the lines for a Reader.
Method Summary
voidclose()
Closes the underlying Reader quietly.
static voidcloseQuietly(LineIterator iterator)
Closes the iterator, handling null and ignoring exceptions.
booleanhasNext()
Indicates whether the Reader has more lines.
protected booleanisValidLine(String line)
Overridable method to validate each line that is returned.
Objectnext()
Returns the next line in the wrapped Reader.
StringnextLine()
Returns the next line in the wrapped Reader.
voidremove()
Unsupported.

Field Detail

bufferedReader

private final BufferedReader bufferedReader
The reader that is being read.

cachedLine

private String cachedLine
The current line.

finished

private boolean finished
A flag indicating if the iterator has been fully read.

Constructor Detail

LineIterator

public LineIterator(Reader reader)
Constructs an iterator of the lines for a Reader.

Parameters: reader the Reader to read from, not null

Throws: IllegalArgumentException if the reader is null

Method Detail

close

public void close()
Closes the underlying Reader quietly. This method is useful if you only want to process the first few lines of a larger file. If you do not close the iterator then the Reader remains open. This method can safely be called multiple times.

closeQuietly

public static void closeQuietly(LineIterator iterator)
Closes the iterator, handling null and ignoring exceptions.

Parameters: iterator the iterator to close

hasNext

public boolean hasNext()
Indicates whether the Reader has more lines. If there is an IOException then close will be called on this instance.

Returns: true if the Reader has more lines

Throws: IllegalStateException if an IO exception occurs

isValidLine

protected boolean isValidLine(String line)
Overridable method to validate each line that is returned.

Parameters: line the line that is to be validated

Returns: true if valid, false to remove from the iterator

next

public Object next()
Returns the next line in the wrapped Reader.

Returns: the next line from the input

Throws: NoSuchElementException if there is no line to return

nextLine

public String nextLine()
Returns the next line in the wrapped Reader.

Returns: the next line from the input

Throws: NoSuchElementException if there is no line to return

remove

public void remove()
Unsupported.

Throws: UnsupportedOperationException always

Copyright (c) 2002-2011 Apache Software Foundation