Class LineIterator

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.util.Iterator<java.lang.String>

    public class LineIterator
    extends java.lang.Object
    implements java.util.Iterator<java.lang.String>, java.io.Closeable
    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
    • Constructor Summary

      Constructors 
      Constructor Description
      LineIterator​(java.io.Reader reader)
      Constructs an iterator of the lines for a Reader.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      void close()
      Closes the underlying Reader.
      static void closeQuietly​(LineIterator iterator)
      Deprecated.
      As of 2.6 deprecated without replacement.
      boolean hasNext()
      Indicates whether the Reader has more lines.
      protected boolean isValidLine​(java.lang.String line)
      Overridable method to validate each line that is returned.
      java.lang.String next()
      Returns the next line in the wrapped Reader.
      java.lang.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
      • Methods inherited from interface java.util.Iterator

        forEachRemaining
    • Constructor Detail

      • LineIterator

        public LineIterator​(java.io.Reader reader)
                     throws java.lang.IllegalArgumentException
        Constructs an iterator of the lines for a Reader.
        Parameters:
        reader - the Reader to read from, not null
        Throws:
        java.lang.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 java.util.Iterator<java.lang.String>
        Returns:
        true if the Reader has more lines
        Throws:
        java.lang.IllegalStateException - if an IO exception occurs
      • isValidLine

        protected boolean isValidLine​(java.lang.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 java.lang.String next()
        Returns the next line in the wrapped Reader.
        Specified by:
        next in interface java.util.Iterator<java.lang.String>
        Returns:
        the next line from the input
        Throws:
        java.util.NoSuchElementException - if there is no line to return
      • nextLine

        public java.lang.String nextLine()
        Returns the next line in the wrapped Reader.
        Returns:
        the next line from the input
        Throws:
        java.util.NoSuchElementException - if there is no line to return
      • close

        public void close()
                   throws java.io.IOException
        Closes the underlying Reader. 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.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException - if closing the underlying Reader fails.
      • remove

        public void remove()
        Unsupported.
        Specified by:
        remove in interface java.util.Iterator<java.lang.String>
        Throws:
        java.lang.UnsupportedOperationException - always
      • closeQuietly

        @Deprecated
        public static void closeQuietly​(LineIterator iterator)
        Deprecated.
        As of 2.6 deprecated without replacement. Please use the try-with-resources statement or handle suppressed exceptions manually.
        Closes a LineIterator quietly.
        Parameters:
        iterator - The iterator to close, or null.
        See Also:
        Throwable.addSuppressed(java.lang.Throwable)