Package org.codehaus.groovy.control.io

# Interface ReaderSource

All Superinterfaces:
  `HasCleanup`

All Known Implementing Classes:
  `AbstractReaderSource`, `FileReaderSource`, `InputStreamReaderSource`, `StringReaderSource`, `URLReaderSource`

public interface ReaderSource extends HasCleanup
An interface for things that can supply (and potentially resupply) a Reader on a source stream.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `canReopenSource()`
  Returns true if the source can be restarted (ie.
  `void`
  `cleanup()`
  Cleans up any cached resources used by getLine().
  `String`
  `getLine(int lineNumber, Janitor janitor)`
  Returns a line from the source, or null, if unavailable.
  `Reader`
  `getReader()`
  Returns a new Reader on the underlying source object.
  `URI`
  `getURI()`
  Returns a URI for this source.

- ## Method Details

  - ### getReader

    Reader getReader() throws IOException
    Returns a new Reader on the underlying source object. Returns null if the source can't be reopened.
    Returns:
      the reader to the resource
    Throws:
      `IOException` - if there was an error opening for stream

  - ### canReopenSource

    boolean canReopenSource()
    Returns true if the source can be restarted (ie. if getReader() will return non-null on subsequent calls).
    Returns:
      true if the resource can be reopened for reading

  - ### getLine

    String getLine(int lineNumber, Janitor janitor)
    Returns a line from the source, or null, if unavailable. If you supply a Janitor, resources will be cached.
    Parameters:
      `lineNumber` - the number of the line of interest
      `janitor` - helper to clean up afterwards
    Returns:
      the line of interest

  - ### cleanup

    void cleanup()
    Cleans up any cached resources used by getLine().
    Specified by:
      `cleanup` in interface `HasCleanup`

  - ### getURI

    URI getURI()
    Returns a URI for this source.
    Since:
      2.3.0