org.apache.commons.io
Class LineIterator

java.lang.Object
  extended by org.apache.commons.io.LineIterator
All Implemented Interfaces:
Iterator<String>

public class LineIterator
extends Object
implements Iterator<String>

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(LineIterator) 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 {
   it.close();
 }
 

Since:
1.2
Version:
$Id: LineIterator.java 1304073 2012-03-22 21:19:18Z sebb $

Constructor Summary
LineIterator(Reader reader)
          Constructs an iterator of the lines for a Reader.
 
Method Summary
 void close()
          Closes the underlying Reader quietly.
static void closeQuietly(LineIterator iterator)
          Closes the iterator, handling null and ignoring exceptions.
 boolean hasNext()
          Indicates whether the Reader has more lines.
protected  boolean isValidLine(String line)
          Overridable method to validate each line that is returned.
 String next()
          Returns the next line in the wrapped Reader.
 String nextLine()
          Returns the next line in the wrapped Reader.
 void remove()
          Unsupported.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LineIterator

public LineIterator(Reader reader)
             throws IllegalArgumentException
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

hasNext

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

Specified by:
hasNext in interface Iterator<String>
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. This implementation always returns true.

Parameters:
line - the line that is to be validated
Returns:
true if valid, false to remove from the iterator

next

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

Specified by:
next in interface Iterator<String>
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

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.


remove

public void remove()
Unsupported.

Specified by:
remove in interface Iterator<String>
Throws:
UnsupportedOperationException - always

closeQuietly

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

Parameters:
iterator - the iterator to close


Copyright © 2002-2012 The Apache Software Foundation. All Rights Reserved.