org.springframework.batch.item.file

## Class FlatFileItemReader<T>

- java.lang.Object
- - org.springframework.batch.item.ItemStreamSupport
  - - org.springframework.batch.item.support.AbstractItemStreamItemReader<T>
    - - org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader<T>
      - - org.springframework.batch.item.file.FlatFileItemReader<T>

- All Implemented Interfaces:
    ResourceAwareItemReaderItemStream<T>, ItemReader<T>, ItemStream, ItemStreamReader<T>, org.springframework.beans.factory.InitializingBean

      public class FlatFileItemReader<T>
      extends AbstractItemCountingItemStreamItemReader<T>
      implements ResourceAwareItemReaderItemStream<T>, org.springframework.beans.factory.InitializingBean

  Restartable `ItemReader` that reads lines from input `setResource(Resource)`. Line is defined by the `setRecordSeparatorPolicy(RecordSeparatorPolicy)` and mapped to item using `setLineMapper(LineMapper)`. If an exception is thrown during line mapping it is rethrown as `FlatFileParseException` adding information about the problematic line and its line number.
  Author:
    Robert Kasanicky, Mahmoud Ben Hassine

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.lang.String[]` | `comments`
    `static java.lang.String` | `DEFAULT_CHARSET`
    `static java.lang.String[]` | `DEFAULT_COMMENT_PREFIXES`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `FlatFileItemReader()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()`
    `protected void` | `doClose()` Close the resources opened in `AbstractItemCountingItemStreamItemReader.doOpen()`.
    `protected void` | `doOpen()` Open resources necessary to start reading input.
    `protected T` | `doRead()` Read next item from input.
    `protected boolean` | `isComment(java.lang.String line)`
    `protected void` | `jumpToItem(int itemIndex)` Move to the given item index.
    `void` | `setBufferedReaderFactory(BufferedReaderFactory bufferedReaderFactory)` Factory for the `BufferedReader` that will be used to extract lines from the file.
    `void` | `setComments(java.lang.String[] comments)` Setter for comment prefixes.
    `void` | `setEncoding(java.lang.String encoding)` Setter for the encoding for this input source.
    `void` | `setLineMapper(LineMapper<T> lineMapper)` Setter for line mapper.
    `void` | `setLinesToSkip(int linesToSkip)` Public setter for the number of lines to skip at the start of a file.
    `void` | `setRecordSeparatorPolicy(RecordSeparatorPolicy recordSeparatorPolicy)` Public setter for the recordSeparatorPolicy.
    `void` | `setResource(org.springframework.core.io.Resource resource)` Public setter for the input resource.
    `void` | `setSkippedLinesCallback(LineCallbackHandler skippedLinesCallback)`
    `void` | `setStrict(boolean strict)` In strict mode the reader will throw an exception on `AbstractItemCountingItemStreamItemReader.open(org.springframework.batch.item.ExecutionContext)` if the input resource does not exist.

    - ### Methods inherited from class org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader

      `close, getCurrentItemCount, isSaveState, open, read, setCurrentItemCount, setMaxItemCount, setSaveState, update`

    - ### Methods inherited from class org.springframework.batch.item.ItemStreamSupport

      `getExecutionContextKey, setExecutionContextName, setName`

    - ### Methods inherited from class java.lang.Object

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

    - ### Methods inherited from interface org.springframework.batch.item.ItemStream

      `close, open, update`

    - ### Methods inherited from interface org.springframework.batch.item.ItemReader

      `read`

- - ### Field Detail

    - #### DEFAULT_CHARSET

          public static final java.lang.String DEFAULT_CHARSET

    - #### DEFAULT_COMMENT_PREFIXES

          public static final java.lang.String[] DEFAULT_COMMENT_PREFIXES

    - #### comments

          protected java.lang.String[] comments

  - ### Constructor Detail

    - #### FlatFileItemReader

          public FlatFileItemReader()

  - ### Method Detail

    - #### setStrict

          public void setStrict(boolean strict)

      In strict mode the reader will throw an exception on `AbstractItemCountingItemStreamItemReader.open(org.springframework.batch.item.ExecutionContext)` if the input resource does not exist.
      Parameters:
        `strict` - `true` by default

    - #### setSkippedLinesCallback

          public void setSkippedLinesCallback(LineCallbackHandler skippedLinesCallback)

      Parameters:
        `skippedLinesCallback` - will be called for each one of the initial skipped lines before any items are read.

    - #### setLinesToSkip

          public void setLinesToSkip(int linesToSkip)

      Public setter for the number of lines to skip at the start of a file. Can be used if the file contains a header without useful (column name) information, and without a comment delimiter at the beginning of the lines.
      Parameters:
        `linesToSkip` - the number of lines to skip

    - #### setLineMapper

          public void setLineMapper(LineMapper<T> lineMapper)

      Setter for line mapper. This property is required to be set.
      Parameters:
        `lineMapper` - maps line to item

    - #### setEncoding

          public void setEncoding(java.lang.String encoding)

      Setter for the encoding for this input source. Default value is `DEFAULT_CHARSET`.
      Parameters:
        `encoding` - a properties object which possibly contains the encoding for this input file;

    - #### setBufferedReaderFactory

          public void setBufferedReaderFactory(BufferedReaderFactory bufferedReaderFactory)

      Factory for the `BufferedReader` that will be used to extract lines from the file. The default is fine for plain text files, but this is a useful strategy for binary files where the standard BufferedReader from java.io is limiting.
      Parameters:
        `bufferedReaderFactory` - the bufferedReaderFactory to set

    - #### setComments

          public void setComments(java.lang.String[] comments)

      Setter for comment prefixes. Can be used to ignore header lines as well by using e.g. the first couple of column names as a prefix. Defaults to `DEFAULT_COMMENT_PREFIXES`.
      Parameters:
        `comments` - an array of comment line prefixes.

    - #### setResource

          public void setResource(org.springframework.core.io.Resource resource)

      Public setter for the input resource.
      Specified by:
        `setResource` in interface `ResourceAwareItemReaderItemStream<T>`

    - #### setRecordSeparatorPolicy

          public void setRecordSeparatorPolicy(RecordSeparatorPolicy recordSeparatorPolicy)

      Public setter for the recordSeparatorPolicy. Used to determine where the line endings are and do things like continue over a line ending if inside a quoted string.
      Parameters:
        `recordSeparatorPolicy` - the recordSeparatorPolicy to set

    - #### doRead

          @Nullable
          protected T doRead()
                                throws java.lang.Exception

      Description copied from class: `AbstractItemCountingItemStreamItemReader`
      Read next item from input.
      Specified by:
        `doRead` in class `AbstractItemCountingItemStreamItemReader<T>`
      Returns:
        string corresponding to logical record according to `setRecordSeparatorPolicy(RecordSeparatorPolicy)` (might span multiple lines in file).
      Throws:
        `java.lang.Exception` - Allows subclasses to throw checked exceptions for interpretation by the framework

    - #### isComment

          protected boolean isComment(java.lang.String line)

    - #### doClose

          protected void doClose()
                          throws java.lang.Exception

      Description copied from class: `AbstractItemCountingItemStreamItemReader`
      Close the resources opened in `AbstractItemCountingItemStreamItemReader.doOpen()`.
      Specified by:
        `doClose` in class `AbstractItemCountingItemStreamItemReader<T>`
      Throws:
        `java.lang.Exception` - Allows subclasses to throw checked exceptions for interpretation by the framework

    - #### doOpen

          protected void doOpen()
                         throws java.lang.Exception

      Description copied from class: `AbstractItemCountingItemStreamItemReader`
      Open resources necessary to start reading input.
      Specified by:
        `doOpen` in class `AbstractItemCountingItemStreamItemReader<T>`
      Throws:
        `java.lang.Exception` - Allows subclasses to throw checked exceptions for interpretation by the framework

    - #### afterPropertiesSet

          public void afterPropertiesSet()
                                  throws java.lang.Exception

      Specified by:
        `afterPropertiesSet` in interface `org.springframework.beans.factory.InitializingBean`
      Throws:
        `java.lang.Exception`

    - #### jumpToItem

          protected void jumpToItem(int itemIndex)
                             throws java.lang.Exception

      Description copied from class: `AbstractItemCountingItemStreamItemReader`
      Move to the given item index. Subclasses should override this method if there is a more efficient way of moving to given index than re-reading the input using `AbstractItemCountingItemStreamItemReader.doRead()`.
      Overrides:
        `jumpToItem` in class `AbstractItemCountingItemStreamItemReader<T>`
      Parameters:
        `itemIndex` - index of item (0 based) to jump to.
      Throws:
        `java.lang.Exception` - Allows subclasses to throw checked exceptions for interpretation by the framework