Package blbutil

Class BlockLineReader

java.lang.Object
blbutil.BlockLineReader
All Implemented Interfaces:
FileIt<String[]>, Closeable, AutoCloseable, Iterator<String[]>

public class BlockLineReader extends Object implements FileIt<String[]>

Class BlockLineReader is a blbutil.FileIt that reads blocks of lines from a file. The order of lines in the source file is preserved by the returned string arrays. The hasNext() method always returns true. After the final block of lines is returned by the next() method, the next() method returns BlockLineReader.SENTINAL on all subsequent invocations. BlockLineReader.SENTINAL is guaranteed to be the only returned array that has length 0.

Instances of class BlockLineReader are thread-safe.

Methods of this class will terminate the Java Virtual Machine with an error message if an I/O Exception is encountered.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static String[]
    The string array returned by next() after all blocks of lines have been read.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Closes the input stream and releases any system resources that are associated with it.
    create(FileIt<String> it, int blockSize, int nBlocks)
    Constructs and returns a new BlockLineReader for the specified data.
    Returns the file from which the data are read, or null if the data are read from standard input or if the data source is unknown.
    boolean
    Returns true.
    Returns the next element in the iteration.
    void
    The remove method is not supported by this iterator.

    Methods inherited from class java.lang.Object

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

    Methods inherited from interface blbutil.FileIt

    toString

    Methods inherited from interface java.util.Iterator

    forEachRemaining
  • Field Details

    • SENTINAL

      public static String[] SENTINAL
      The string array returned by next() after all blocks of lines have been read.
  • Method Details

    • create

      public static BlockLineReader create(FileIt<String> it, int blockSize, int nBlocks)
      Constructs and returns a new BlockLineReader for the specified data. The close() method of the returned object will invoke the close() method on the specified FileIt<String> iterator. The calling thread should not directly invoke any methods of the specified FileIt<String> after it is passed to the BlockLineReader.create() method.
      Parameters:
      it - a file iterator that returns the lines of text
      blockSize - the maximum length a string array returned by next()
      nBlocks - the maximum number of non-empty string arrays that will be buffered
      Returns:
      a BlockLineReader for the specified data.
      Throws:
      IllegalArgumentException - if blockSize < 1 || nBlocks < 1
      NullPointerException - if it == null
    • file

      public File file()
      Description copied from interface: FileIt
      Returns the file from which the data are read, or null if the data are read from standard input or if the data source is unknown.
      Specified by:
      file in interface FileIt<String[]>
      Returns:
      the file from which the data are read, or null if the data are read from standard input or if the data source is unknown
    • close

      public void close()
      Description copied from interface: FileIt
      Closes the input stream and releases any system resources that are associated with it. If the input stream is already closed then invoking this method has no effect.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in interface FileIt<String[]>
    • hasNext

      public boolean hasNext()
      Returns true. The this.next() method will return BlockLineReader.SENTINAL if the iterations has no more elements.
      Specified by:
      hasNext in interface Iterator<String[]>
      Returns:
      true
    • next

      public String[] next()
      Returns the next element in the iteration. Returns BlockLineReader.SENTINAL if the iterations has no more elements.
      Specified by:
      next in interface Iterator<String[]>
      Returns:
      the next element in the iteration
    • remove

      public void remove()
      The remove method is not supported by this iterator.
      Specified by:
      remove in interface Iterator<String[]>
      Throws:
      UnsupportedOperationException - if this method is invoked