Class CSVRecord
- java.lang.Object
-
- org.apache.commons.csv.CSVRecord
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Iterable<java.lang.String>
public final class CSVRecord extends java.lang.Object implements java.io.Serializable, java.lang.Iterable<java.lang.String>
A CSV record parsed from a CSV file.Note: Support for
Serializable
is scheduled to be removed in version 2.0. In version 1.8 the mapping between the column header and the column index was removed from the serialized state. The class maintains serialization compatibility with versions pre-1.8 for the record values; these must be accessed by index following deserialization. There will be a loss of any functionally linked to the header mapping when transferring serialized forms pre-1.8 to 1.8 and vice versa.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private long
bytePosition
The starting position of this record in the source stream, measured in bytes.private long
characterPosition
The start position of this record as a character position in the source stream.private java.lang.String
comment
The accumulated comments (if any)private CSVParser
parser
The parser that originates this record.private long
recordNumber
The record number.private static long
serialVersionUID
private java.lang.String[]
values
The values of the record
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
get(int i)
Returns a value by index.java.lang.String
get(java.lang.Enum<?> e)
Returns a value byEnum
.java.lang.String
get(java.lang.String name)
Returns a value by name.long
getBytePosition()
Returns the starting position of this record in the source stream, measured in bytes.long
getCharacterPosition()
Returns the start position of this record as a character position in the source stream.java.lang.String
getComment()
Returns the comment for this record, if any.private java.util.Map<java.lang.String,java.lang.Integer>
getHeaderMapRaw()
CSVParser
getParser()
Returns the parser.long
getRecordNumber()
Returns the number of this record in the parsed CSV file.boolean
hasComment()
Checks whether this record has a comment, false otherwise.boolean
isConsistent()
Tells whether the record size matches the header size.boolean
isMapped(java.lang.String name)
Checks whether a given column is mapped, that is, its name has been defined to the parser.boolean
isSet(int index)
Checks whether a column with a given index has a value.boolean
isSet(java.lang.String name)
Checks whether a given column is mapped and has a value.java.util.Iterator<java.lang.String>
iterator()
Returns an iterator over the values of this record.<M extends java.util.Map<java.lang.String,java.lang.String>>
MputIn(M map)
Puts all values of this record into the given Map.int
size()
Returns the number of values in this record.java.util.stream.Stream<java.lang.String>
stream()
Returns a sequential ordered stream whose elements are the values.java.util.List<java.lang.String>
toList()
Converts the values to a new List.java.util.Map<java.lang.String,java.lang.String>
toMap()
Copies this record into a new Map of header name to record value.java.lang.String
toString()
Returns a string representation of the contents of this record.java.lang.String[]
values()
Gets the values for this record.
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
characterPosition
private final long characterPosition
The start position of this record as a character position in the source stream. This may or may not correspond to the byte position depending on the character set.
-
bytePosition
private final long bytePosition
The starting position of this record in the source stream, measured in bytes.
-
comment
private final java.lang.String comment
The accumulated comments (if any)
-
recordNumber
private final long recordNumber
The record number.
-
values
private final java.lang.String[] values
The values of the record
-
parser
private final transient CSVParser parser
The parser that originates this record. This is not serialized.
-
-
Constructor Detail
-
CSVRecord
CSVRecord(CSVParser parser, java.lang.String[] values, java.lang.String comment, long recordNumber, long characterPosition, long bytePosition)
-
-
Method Detail
-
get
public java.lang.String get(java.lang.Enum<?> e)
Returns a value byEnum
.- Parameters:
e
- an enum- Returns:
- the String at the given enum String
-
get
public java.lang.String get(int i)
Returns a value by index.- Parameters:
i
- a column index (0-based)- Returns:
- the String at the given index
-
get
public java.lang.String get(java.lang.String name)
Returns a value by name. If multiple instances of the header name exists, only the last occurrence is returned.Note: This requires a field mapping obtained from the original parser. A check using
isMapped(String)
should be used to determine if a mapping exists from the providedname
to a field index. In this case an exception will only be thrown if the record does not contain a field corresponding to the mapping, that is the record length is not consistent with the mapping size.- Parameters:
name
- the name of the column to be retrieved.- Returns:
- the column value, maybe null depending on
CSVFormat.getNullString()
. - Throws:
java.lang.IllegalStateException
- if no header mapping was providedjava.lang.IllegalArgumentException
- ifname
is not mapped or if the record is inconsistent- See Also:
isMapped(String)
,isConsistent()
,getParser()
,CSVFormat.Builder.setNullString(String)
-
getBytePosition
public long getBytePosition()
Returns the starting position of this record in the source stream, measured in bytes.- Returns:
- the byte position of this record in the source stream.
- Since:
- 1.13.0
-
getCharacterPosition
public long getCharacterPosition()
Returns the start position of this record as a character position in the source stream. This may or may not correspond to the byte position depending on the character set.- Returns:
- the position of this record in the source stream.
-
getComment
public java.lang.String getComment()
Returns the comment for this record, if any. Note that comments are attached to the following record. If there is no following record (that is, the comment is at EOF), then the comment will be ignored.- Returns:
- the comment for this record, or null if no comment for this record is available.
-
getHeaderMapRaw
private java.util.Map<java.lang.String,java.lang.Integer> getHeaderMapRaw()
-
getParser
public CSVParser getParser()
Returns the parser.Note: The parser is not part of the serialized state of the record. A null check should be used when the record may have originated from a serialized form.
- Returns:
- the parser.
- Since:
- 1.7
-
getRecordNumber
public long getRecordNumber()
Returns the number of this record in the parsed CSV file.NOTE:If your CSV input has multi-line values, the returned number does not correspond to the current line number of the parser that created this record.
- Returns:
- the number of this record.
- See Also:
CSVParser.getCurrentLineNumber()
-
hasComment
public boolean hasComment()
Checks whether this record has a comment, false otherwise. Note that comments are attached to the following record. If there is no following record (that is, the comment is at EOF), then the comment will be ignored.- Returns:
- true if this record has a comment, false otherwise
- Since:
- 1.3
-
isConsistent
public boolean isConsistent()
Tells whether the record size matches the header size.Returns true if the sizes for this record match and false if not. Some programs can export files that fail this test but still produce parsable files.
- Returns:
- true of this record is valid, false if not
-
isMapped
public boolean isMapped(java.lang.String name)
Checks whether a given column is mapped, that is, its name has been defined to the parser.- Parameters:
name
- the name of the column to be retrieved.- Returns:
- whether a given column is mapped.
-
isSet
public boolean isSet(int index)
Checks whether a column with a given index has a value.- Parameters:
index
- a column index (0-based)- Returns:
- whether a column with a given index has a value
-
isSet
public boolean isSet(java.lang.String name)
Checks whether a given column is mapped and has a value.- Parameters:
name
- the name of the column to be retrieved.- Returns:
- whether a given column is mapped and has a value
-
iterator
public java.util.Iterator<java.lang.String> iterator()
Returns an iterator over the values of this record.- Specified by:
iterator
in interfacejava.lang.Iterable<java.lang.String>
- Returns:
- an iterator over the values of this record.
-
putIn
public <M extends java.util.Map<java.lang.String,java.lang.String>> M putIn(M map)
Puts all values of this record into the given Map.- Type Parameters:
M
- the map type- Parameters:
map
- The Map to populate.- Returns:
- the given map.
- Since:
- 1.9.0
-
size
public int size()
Returns the number of values in this record.- Returns:
- the number of values.
-
stream
public java.util.stream.Stream<java.lang.String> stream()
Returns a sequential ordered stream whose elements are the values.- Returns:
- the new stream.
- Since:
- 1.9.0
-
toList
public java.util.List<java.lang.String> toList()
Converts the values to a new List.Editing the list does not update this instance.
- Returns:
- a new List
- Since:
- 1.9.0
-
toMap
public java.util.Map<java.lang.String,java.lang.String> toMap()
Copies this record into a new Map of header name to record value. If multiple instances of a header name exist, then only the last occurrence is mapped.Editing the map does not update this instance.
- Returns:
- A new Map. The map is empty if the record has no headers.
-
toString
public java.lang.String toString()
Returns a string representation of the contents of this record. The result is constructed by comment, mapping, recordNumber and by passing the internal values array toArrays.toString(Object[])
.- Overrides:
toString
in classjava.lang.Object
- Returns:
- a String representation of this record.
-
values
public java.lang.String[] values()
Gets the values for this record. This is not a copy.- Returns:
- the values for this record.
- Since:
- 1.10.0
-
-