public class CSVReader extends RowReader
A very simple CSV reader.
It works as any other RowReader, but open must be called once before the first read operation.
Using the format RFC 4180.
Except: leading and trailing spaces, adjacent to CSV separator character, are trimmed.
You can use your own separators and quote characters. By default the separator is the comma (,) and the quote character is the double quotes (").
Fields with multiple lines can be allowed (and the maximum lines specified), but the default is a single line.
The locale string can be used to set the language, country and the file encoding. The format must be "[language_territory][.codeset]". But only the file encoding is being used in the current version.
The languages supported are: "en_US", "es_ES" and "ca_ES".
The file encodings supported are: "utf8" and "iso88591".
For example:
To don't change the default locales, use an empty string: "".
To read a file in utf8 with the default language settings use ".utf8".
To read a file in iso88591 with English language use: "en_US.iso88591".
Check out the 'Data import' section in the SPARKSEE User Manual for more details on this.
Constructor and Description |
---|
CSVReader()
Constructs CSVReader.
|
Modifier and Type | Method and Description |
---|---|
void |
close()
Closes the reader.
|
int |
getRow()
The row number for the current row.
|
void |
open(java.lang.String filePath)
Opens the source file path.
|
boolean |
read(StringList row)
Reads the next row as a string array.
|
boolean |
reset()
Moves the reader to the beginning.
|
void |
setLocale(java.lang.String localeStr)
Sets the locale that will be used to read the file.
|
void |
setMultilines(int numExtralines)
Allows the use of fields with more than one line.
|
void |
setNumLines(int numLines)
Used to limit the number of lines that will be read.
|
void |
setQuotes(java.lang.String quotes)
Sets the character used to quote fields.
|
void |
setSeparator(java.lang.String sep)
Sets the character used to separate fields in the file.
|
void |
setSingleLine()
Only allows single line fields.
|
void |
setStartLine(int startLine)
Sets the number of lines to be skiped from the beginning.
|
public void setSeparator(java.lang.String sep) throws java.lang.RuntimeException
sep
- [in] Separator character.java.lang.RuntimeException
- nullpublic void setNumLines(int numLines)
numLines
- [in] The maximum number of lines to read (0 == unlimited)public void close() throws java.io.IOException
public void setLocale(java.lang.String localeStr)
localeStr
- [in] The locale string for the file encoding.public boolean read(StringList row) throws java.io.IOException
public void setMultilines(int numExtralines)
numExtralines
- [in] Maximum number of extra lines for each column (0==unlimited, N==N+1 total rows).public void open(java.lang.String filePath) throws java.io.IOException
File can be optionally compressed in GZIP format.
filePath
- [in] CSV file path.java.io.IOException
- If bad things happen opening the file.public boolean reset() throws java.io.IOException
Restarts the reader.
public void setStartLine(int startLine)
startLine
- [in] The line number to skip for start readingpublic void setSingleLine()
public int getRow() throws java.io.IOException
public void setQuotes(java.lang.String quotes) throws java.lang.RuntimeException
quotes
- [in] Quote character.java.lang.RuntimeException
- null