Package org.beanio.stream.delimited
Class DelimitedReader
- java.lang.Object
-
- org.beanio.stream.delimited.DelimitedReader
-
- All Implemented Interfaces:
RecordReader
public class DelimitedReader extends java.lang.Object implements RecordReader
ADelimitedReader
is used to parse delimited flat files into records ofString
arrays. Records must be terminated by a single configurable character, or by default, any of the following: line feed (LF), carriage return (CR), or CRLF combination. And fields that make up a record must be delimited by a single configurable character.If an escape character is configured, the delimiting character can be be escaped in a field by placing the escape character immediately before the delimiter. The escape character may also be used to escape itself. For example, using a comma delimiter and backslash escape:
Field1,Field2\,Field3,Field\\4,Field\5
The record would be parsed as "Field1", "Field2,Field3", "Field\4", "Field\5"Additionally, if a record may span multiple lines, a single line continuation character can be configured. The line continuation character must immediately precede the record termination character. For example, using a comma delimiter and backslash line continuation character:
Field1,Field2\ Field3
The 2 lines would be parsed as a single record with values "Field1", "Field2", "Field3".The same character can be used for line continuation and escaping, but neither can match the delimiter.
- Since:
- 1.0
-
-
Constructor Summary
Constructors Constructor Description DelimitedReader(java.io.Reader in)
Constructs a newDelimitedReader
using a tab character for the field delimiter.DelimitedReader(java.io.Reader in, char delimiter)
Constructs a newDelimitedReader
.DelimitedReader(java.io.Reader in, DelimitedParserConfiguration config)
Constructs a newDelimitedReader
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Closes this input stream.int
getRecordLineNumber()
Returns the starting line number of the last record record.java.lang.String
getRecordText()
Returns the raw text of the last record read or null if the end of the stream was reached.java.lang.String[]
read()
Reads a single record from this input stream.
-
-
-
Constructor Detail
-
DelimitedReader
public DelimitedReader(java.io.Reader in)
Constructs a newDelimitedReader
using a tab character for the field delimiter. Escaping is and line continuation characters are disabled.- Parameters:
in
- the input stream to read from
-
DelimitedReader
public DelimitedReader(java.io.Reader in, char delimiter)
Constructs a newDelimitedReader
. Escaping and line continuation characters are disabled.- Parameters:
in
- the input stream to read fromdelimiter
- the field delimiting character
-
DelimitedReader
public DelimitedReader(java.io.Reader in, DelimitedParserConfiguration config)
Constructs a newDelimitedReader
.- Parameters:
in
- the input stream to read fromconfig
- the reader configuration settings ornull
to use default values- Throws:
java.lang.IllegalArgumentException
- if the delimiter matches the escape character or or the line continuation character- Since:
- 1.2
-
-
Method Detail
-
getRecordLineNumber
public int getRecordLineNumber()
Returns the starting line number of the last record record. A value of -1 is returned if the end of the stream was reached, or 0 if records are not terminated by new line characters.- Specified by:
getRecordLineNumber
in interfaceRecordReader
- Returns:
- the starting line number of the last record
-
getRecordText
public java.lang.String getRecordText()
Returns the raw text of the last record read or null if the end of the stream was reached.- Specified by:
getRecordText
in interfaceRecordReader
- Returns:
- the raw text of the last record
-
read
public java.lang.String[] read() throws java.io.IOException
Description copied from interface:RecordReader
Reads a single record from this input stream. The type of object returned depends on the format of the stream.- Specified by:
read
in interfaceRecordReader
- Returns:
- the record value, or null if the end of the stream was reached.
- Throws:
java.io.IOException
- if an I/O error occurs reading from the stream
-
close
public void close() throws java.io.IOException
Description copied from interface:RecordReader
Closes this input stream.- Specified by:
close
in interfaceRecordReader
- Throws:
java.io.IOException
- if an I/O error occurs closing the stream
-
-