| |
|
| java.lang.Object com.Ostermiller.util.LabeledCSVParser
LabeledCSVParser | public class LabeledCSVParser implements CSVParse(Code) | | Decorate a CSVParse object to provide an index of field names. Many (most?)
CSV files have a list of field names (labels) as the first line. A
LabeledCSVParser will consume this line automatically. The methods
LabeledCSVParser.getLabels() ,
LabeledCSVParser.getLabelIndex(String) and
LabeledCSVParser.getValueByLabel(String) allow these labels to be discovered and
used while parsing CSV data. This class can also be used to conveniently
ignore field labels if they happen to be present in a CSV file and are not
desired.
author: Campbell, Allen T. author: Stephen Ostermiller http://ostermiller.org/contact.pl?regarding=Java+Utilities since: ostermillerutils 1.03.00 |
Method Summary | |
public void | changeDelimiter(char newDelim) Change this parser so that it uses a new delimiter. | public void | changeQuote(char newQuote) Change this parser so that it uses a new character for quoting. | public void | close() Close any stream upon which this parser is based. | public String[][] | getAllValues() Get all the values from the file.
If the file has already been partially read, only the
values that have not already been read will be included.
Each line of the file that has at least one value will be
represented. | public int | getLabelIdx(String label) Get the index of the column having the given label.
The
LabeledCSVParser.getLine() method returns an
array of field values for a single record of data. | public int | getLabelIndex(String label) Get the index of the column having the given label.
The
LabeledCSVParser.getLine() method returns an
array of field values for a single record of data. | public String[] | getLabels() Return an array of all field names from the top
of the CSV file. | public int | getLastLineNumber() Get the line number that the last token came from. | public String[] | getLine() Get all the values from a line.
If the line has already been partially read, only the values that have not
already been read will be included.
In addition to returning all the values from a line, LabeledCSVParser
maintains a buffer of the values. | public String | getValueByLabel(String label) Given the label for the column, get the column from the last line that
was read. | public int | lastLineNumber() Get the line number that the last token came from. | public String | nextValue() Read the next value from the file. |
LabeledCSVParser | public LabeledCSVParser(CSVParse parse) throws IOException(Code) | | Construct a LabeledCSVParser on a CSVParse implementation.
Parameters: parse - CSVParse implementation throws: IOException - if an error occurs while reading. since: ostermillerutils 1.03.00 |
changeDelimiter | public void changeDelimiter(char newDelim) throws BadDelimiterException(Code) | | Change this parser so that it uses a new delimiter.
The initial character is a comma, the delimiter cannot be changed
to a quote or other character that has special meaning in CSV.
Parameters: newDelim - delimiter to which to switch. throws: BadDelimiterException - if the character cannot be used as a delimiter. since: ostermillerutils 1.03.00 |
changeQuote | public void changeQuote(char newQuote) throws BadQuoteException(Code) | | Change this parser so that it uses a new character for quoting.
The initial character is a double quote ("), the delimiter cannot be changed
to a comma or other character that has special meaning in CSV.
Parameters: newQuote - character to use for quoting. throws: BadQuoteException - if the character cannot be used as a quote. since: ostermillerutils 1.03.00 |
close | public void close() throws IOException(Code) | | Close any stream upon which this parser is based.
throws: IOException - if an error occurs while closing the stream. since: ostermillerutils 1.03.00 |
getAllValues | public String[][] getAllValues() throws IOException(Code) | | Get all the values from the file.
If the file has already been partially read, only the
values that have not already been read will be included.
Each line of the file that has at least one value will be
represented. Comments and empty lines are ignored.
The resulting double array may be jagged.
The last line of the values is saved and may be accessed
by getValueByLabel().
all the values from the file or null if there are no more values. throws: IOException - if an error occurs while reading. since: ostermillerutils 1.03.00 |
getLabelIdx | public int getLabelIdx(String label) throws IOException(Code) | | Get the index of the column having the given label.
The
LabeledCSVParser.getLine() method returns an
array of field values for a single record of data. This method returns
the index of a member of that array based on the specified field name.
The first field has the index 0.
Parameters: label - The field name. The index of the field name, or -1 if the label does not exist. throws: IOException - if an IO error occurs since: ostermillerutils 1.04.02 |
getLabelIndex | public int getLabelIndex(String label)(Code) | | Get the index of the column having the given label.
The
LabeledCSVParser.getLine() method returns an
array of field values for a single record of data. This method returns
the index of a member of that array based on the specified field name.
The first field has the index 0.
Parameters: label - The field name. The index of the field name, or -1 if the label does not exist. since: ostermillerutils 1.03.00 |
getLabels | public String[] getLabels() throws IOException(Code) | | Return an array of all field names from the top
of the CSV file.
Field names. throws: IOException - if an IO error occurs since: ostermillerutils 1.03.00 |
getLastLineNumber | public int getLastLineNumber()(Code) | | Get the line number that the last token came from.
New line breaks that occur in the middle of a token are not
counted in the line number count.
The first line of labels does not count towards the line number.
line number or -1 if no tokens have been returned yet. since: ostermillerutils 1.03.00 |
getValueByLabel | public String getValueByLabel(String label) throws IllegalStateException(Code) | | Given the label for the column, get the column from the last line that
was read. If the column cannot be found in the line, null is returned.
Parameters: label - The field name. throws: IllegalStateException - if nextValue has been called as part of getting the last line. nextValue is not compatible with this method. the value from the last line read or null if there is no such value since: ostermillerutils 1.03.00 |
lastLineNumber | public int lastLineNumber()(Code) | | Get the line number that the last token came from.
New line breaks that occur in the middle of a token are not
counted in the line number count.
The first line of labels does not count towards the line number.
line number or -1 if no tokens have been returned yet. since: ostermillerutils 1.03.00 |
nextValue | public String nextValue() throws IOException(Code) | | Read the next value from the file. The line number from
which this value was taken can be obtained from getLastLineNumber().
This method is not compatible with getValueByLabel(). Using this
method will make getValueByLabel() throw an IllegalStateException
for the rest of the line.
the next value or null if there are no more values. throws: IOException - if an error occurs while reading. since: ostermillerutils 1.03.00 |
|
|
|