Class LocationAwareReader

java.lang.Object
java.io.Reader
java.io.FilterReader
de.intarsys.tools.reader.LocationAwareReader
All Implemented Interfaces:
ILocationProvider, Closeable, AutoCloseable, Readable

public class LocationAwareReader extends FilterReader implements ILocationProvider
An implementation of ILocationProvider. This class can be "piped" in a reader stream to access the current "pointer" into the data.

A common pitfall is to read the ILocationProvider via a BufferedReader - this will certainly not provide with a correct character location!

  • Constructor Details

    • LocationAwareReader

      public LocationAwareReader(Reader in)
  • Method Details

    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class FilterReader
      Throws:
      IOException
    • ensureOpen

      public void ensureOpen() throws IOException
      Throws:
      IOException
    • getColumn

      public int getColumn()
      Specified by:
      getColumn in interface ILocationProvider
    • getLine

      public int getLine()
      Specified by:
      getLine in interface ILocationProvider
    • getPosition

      public int getPosition()
      Specified by:
      getPosition in interface ILocationProvider
    • read

      public int read() throws IOException
      Overrides:
      read in class FilterReader
      Throws:
      IOException
    • read

      public int read(char[] cbuf, int off, int len) throws IOException
      Overrides:
      read in class FilterReader
      Throws:
      IOException
    • setColumn

      public void setColumn(int column)
      Parameters:
      column - The column to set.
    • setLine

      public void setLine(int line)
      Parameters:
      line - The line to set.
    • setLocation

      public void setLocation(int line, int column)
      Offset the current location to a user defined line and column.
      Parameters:
      line - The line we want the reader to accept as new location
      column - The column we want the reader to accept as new location
    • setPosition

      public void setPosition(int position)
      Parameters:
      position - The position to set.
    • skip

      public long skip(long n) throws IOException
      Overrides:
      skip in class FilterReader
      Throws:
      IOException