Class CSVFormat
- All Implemented Interfaces:
Serializable
Using predefined formats
You can use one of the predefined formats:
DEFAULTEXCELINFORMIX_UNLOADINFORMIX_UNLOAD_CSVMONGODB_CSVMONGODB_TSVMYSQLORACLEPOSTGRESQL_CSVPOSTGRESQL_TEXTRFC4180TDF
For example:
CSVParser parser = CSVFormat.EXCEL.parse(reader);
The CSVParser provides static methods to parse other input types, for example:
CSVParser parser = CSVParser.parse(file, StandardCharsets.US_ASCII, CSVFormat.EXCEL);
Defining formats
You can extend a format by calling the set methods. For example:
CSVFormat.EXCEL.builder().setNullString("N/A").setIgnoreSurroundingSpaces(true).get();
Defining column names
To define the column names you want to use to access records, write:
CSVFormat.EXCEL.builder().setHeader("Col1", "Col2", "Col3").get();
Calling CSVFormat.Builder.setHeader(String...) lets you use the given names to address values in a CSVRecord, and assumes that your CSV source does not
contain a first record that also defines column names.
If it does, then you are overriding this metadata with your names and you should skip the first record by calling
CSVFormat.Builder.setSkipHeaderRecord(boolean) with true.
Parsing
You can use a format directly to parse a reader. For example, to parse an Excel file with columns header, write:
Reader in = ...;
CSVFormat.EXCEL.builder().setHeader("Col1", "Col2", "Col3").get().parse(in);
For other input types, like resources, files, and URLs, use the static methods on CSVParser.
Referencing columns safely
If your source contains a header record, you can simplify your code and safely reference columns, by using CSVFormat.Builder.setHeader(String...) with no
arguments:
CSVFormat.EXCEL.builder().setHeader().get();
This causes the parser to read the first record and use its values as column names.
Then, call one of the CSVRecord get method that takes a String column name argument:
String value = record.get("Col1");
This makes your code impervious to changes in column order in the CSV file.
Serialization
This class implements the Serializable interface with the following caveats:
- This class will no longer implement Serializable in 2.0.
- Serialization is not supported from one version to the next.
The serialVersionUID values are:
- Version 1.10.0:
2L - Version 1.9.0 through 1.0:
1L
Notes
This class is immutable.
Not all settings are used for both parsing and writing.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classBuilds CSVFormat instances.static enumPredefines formats. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final booleanWhether missing column names are allowed when parsing the header line.private final booleanWhether to flush on close.private final CharacterSet to null if commenting is disabled.static final CSVFormatStandard Comma Separated Value format, as forRFC4180but allowing empty lines.private final StringThe character delimiting the values (typically ";", "," or "\t").private final DuplicateHeaderModeHow duplicate headers are handled.private final CharacterSet to null if escaping is disabled.static final CSVFormatMicrosoft Excel file format (using a comma as the value delimiter).private final String[]Array of header comment lines.private final String[]Array of header column names.private final booleanWhether empty lines between records are ignored when parsing input.private final booleanShould ignore header names case.private final booleanShould leading/trailing spaces be ignored around values?.static final CSVFormatDefault Informix CSV UNLOAD format used by theUNLOAD TO file_nameoperation.static final CSVFormatDefault Informix CSV UNLOAD format used by theUNLOAD TO file_nameoperation (escaping is disabled.)private final booleanWhether reading end-of-file is allowed even when input is malformed, helps Excel compatibility.private final longThe maximum number of rows to process, excluding the header row.static final CSVFormatDefault MongoDB CSV format used by themongoexportoperation.static final CSVFormatDefault MongoDB TSV format used by themongoexportoperation.static final CSVFormatprivate final StringThe string to be used for null values.static final CSVFormatDefault Oracle format used by the SQL*Loader utility.static final CSVFormatDefault PostgreSQL CSV format used by theCOPYoperation.static final CSVFormatDefault PostgreSQL Text format used by theCOPYoperation.private final CharacterSet to null if quoting is disabled.private final StringSet toquoteCharacter + nullString + quoteCharacterprivate final QuoteModeThe quote policy output fields.private final StringFor output.static final CSVFormatComma separated format as defined by RFC 4180.private static final longprivate final booleanWhether to skip the header record.static final CSVFormatTab-delimited format (TDF).private final booleanWhether reading trailing data is allowed in records, helps Excel compatibility.private final booleanWhether to add a trailing delimiter.private final booleanWhether to trim leading and trailing blanks. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidappend(char c, Appendable appendable) private voidappend(CharSequence csq, Appendable appendable) builder()Creates a new Builder for this instance.(package private) static <T> T[]clone(T... values) Null-safe clone of an array.private static booleanReturns true if the given string contains the search char.private static booleancontainsLineBreak(String source) Returns true if the given string contains a line break character.(package private) CSVFormatcopy()Creates a copy of this instance.(package private) static CSVFormatCreates a null-safe copy of the given instance.booleanprivate voidescape(char c, Appendable appendable) Formats the specified values as a CSV record string.private StringbooleanDeprecated.booleanGets whether missing column names are allowed when parsing the header line.booleanGets whether to flush on close.Gets the comment marker character,nulldisables comments.charDeprecated.UsegetDelimiterString().(package private) char[]Gets the character delimiting the values (typically ";", "," or "\t").Gets the character delimiting the values (typically ";", "," or "\t").Gets how duplicate headers are handled.(package private) charGets the escape character.Gets the escape character.String[]Gets a copy of the header array.String[]Gets a copy of the header comment array to write before the CSV data.booleanGets whether empty lines between records are ignored when parsing input.booleanGets whether header names will be accessed ignoring case when parsing input.booleanGets whether spaces around values are ignored when parsing input.booleanGets whether reading end-of-file is allowed even when input is malformed, helps Excel compatibility.longGets the maximum number of rows to process, excluding the header row.Gets the String to convert to and fromnull.Gets the character used to encapsulate values containing special characters.Gets the quote policy output fields.Gets the record separator delimiting output records.booleanGets whether to skip the header record.booleanGets whether reading trailing data is allowed in records, helps Excel compatibility.booleanGets whether to add a trailing delimiter.booleangetTrim()Gets whether to trim leading and trailing blanks.inthashCode()(package private) static booleanbooleanTests whether comments are supported by this format.private booleanisDelimiter(char ch0, CharSequence charSeq, int startIndex, char[] delimiter, int delimiterLength) Tests whether the next characters constitute a delimiterbooleanTests whether escapes are being processed.private static booleanisLineBreak(char c) Returns true if the given character is a line break character.private static booleanReturns true if the given character is a line break character.booleanTests whether a null string has been defined.booleanTests whether a quoteChar has been defined.private static booleanisTrimChar(char ch) Same test as in asString.trim().private static booleanisTrimChar(CharSequence charSequence, int pos) Same test as in asString.trim().(package private) <T> org.apache.commons.io.function.IOStream<T> limit(org.apache.commons.io.function.IOStream<T> stream) static CSVFormatnewFormat(char delimiter) Creates a new CSV format with the specified delimiter.Parses the specified content.Prints to the specifiedFilewith givenCharset.private voidprint(InputStream inputStream, Appendable out, boolean newRecord) private voidprint(Reader reader, Appendable out, boolean newRecord) print(Appendable out) Prints to the specified output.voidprint(Object value, Appendable out, boolean newRecord) Prints thevalueas the next value on the line toout.private voidprint(Object object, CharSequence value, Appendable out, boolean newRecord) Prints to the specifiedPathwith givenCharset, returns aCSVPrinterwhich the caller MUST close.printer()Prints to theSystem.out.voidprintln(Appendable appendable) Outputs the trailing delimiter (if set) followed by the record separator (if set).voidprintRecord(Appendable appendable, Object... values) Prints the givenvaluestooutas a single record of delimiter-separated values followed by the record separator.private voidprintWithEscapes(Reader reader, Appendable appendable) private voidprintWithEscapes(CharSequence charSeq, Appendable appendable) private voidprintWithQuotes(Reader reader, Appendable appendable) Always use quotes unless QuoteMode is NONE, so we do not have to look ahead.private voidprintWithQuotes(Object object, CharSequence charSeq, Appendable out, boolean newRecord) toString()(package private) static String[]toStringArray(Object[] values) (package private) static CharSequencetrim(CharSequence charSequence) (package private) String(package private) boolean(package private) booleanuseRow(long rowNum) private voidvalidate()Verifies the validity and consistency of the attributes, and throws anIllegalArgumentExceptionif necessary.static CSVFormatGets one of the predefined formats fromCSVFormat.Predefined.Deprecated.withAllowDuplicateHeaderNames(boolean allowDuplicateHeaderNames) Deprecated.Deprecated.withAllowMissingColumnNames(boolean allowMissingColumnNames) Deprecated.withAutoFlush(boolean autoFlush) Deprecated.withCommentMarker(char commentMarker) Deprecated.withCommentMarker(Character commentMarker) Deprecated.withDelimiter(char delimiter) Deprecated.withEscape(char escape) Deprecated.withEscape(Character escape) Deprecated.Deprecated.withHeader(Class<? extends Enum<?>> headerEnum) Deprecated.withHeader(String... header) Deprecated.withHeader(ResultSet resultSet) Deprecated.withHeader(ResultSetMetaData resultSetMetaData) Deprecated.withHeaderComments(Object... headerComments) Deprecated.Deprecated.withIgnoreEmptyLines(boolean ignoreEmptyLines) Deprecated.Deprecated.withIgnoreHeaderCase(boolean ignoreHeaderCase) Deprecated.Deprecated.withIgnoreSurroundingSpaces(boolean ignoreSurroundingSpaces) Deprecated.withNullString(String nullString) Deprecated.withQuote(char quoteChar) Deprecated.Deprecated.withQuoteMode(QuoteMode quoteMode) Deprecated.withRecordSeparator(char recordSeparator) Deprecated.withRecordSeparator(String recordSeparator) Deprecated.Deprecated.withSkipHeaderRecord(boolean skipHeaderRecord) Deprecated.Deprecated.Deprecated.withTrailingDelimiter(boolean trailingDelimiter) Deprecated.withTrim()Deprecated.withTrim(boolean trim) Deprecated.
-
Field Details
-
DEFAULT
Standard Comma Separated Value format, as forRFC4180but allowing empty lines.The
CSVFormat.Buildersettings are:setDelimiter(',')setQuote('"')setRecordSeparator("\r\n")setIgnoreEmptyLines(true)setDuplicateHeaderMode(DuplicateHeaderMode.ALLOW_ALL)
- See Also:
-
EXCEL
Microsoft Excel file format (using a comma as the value delimiter). Note that the actual value delimiter used by Excel is locale-dependent, it might be necessary to customize this format to accommodate your regional settings.For example for parsing or generating a CSV file on a French system the following format will be used:
CSVFormat format = CSVFormat.EXCEL.builder().setDelimiter(';').get();The
CSVFormat.Buildersettings are theDEFAULTwith:setDelimiter(',')setQuote('"')setRecordSeparator("\r\n")setDuplicateHeaderMode(DuplicateHeaderMode.ALLOW_ALL)setIgnoreEmptyLines(false)setAllowMissingColumnNames(true)setTrailingData(true)setLenientEof(true)
Note: This is currently like
RFC4180plusBuilder#setAllowMissingColumnNames(true)andBuilder#setIgnoreEmptyLines(false).- See Also:
-
INFORMIX_UNLOAD
Default Informix CSV UNLOAD format used by theUNLOAD TO file_nameoperation.This is a comma-delimited format with an LF character as the line separator. Values are not quoted and special characters are escaped with
'\'. The default NULL string is"\\N".The
CSVFormat.Buildersettings are theDEFAULTwith:setDelimiter(',')setEscape('\\')setQuote('\"')setRecordSeparator('\n')
- Since:
- 1.3
- See Also:
-
INFORMIX_UNLOAD_CSV
Default Informix CSV UNLOAD format used by theUNLOAD TO file_nameoperation (escaping is disabled.)This is a comma-delimited format with an LF character as the line separator. Values are not quoted and special characters are escaped with
'\'. The default NULL string is"\\N".The
CSVFormat.Buildersettings are theDEFAULTwith:setDelimiter(',')setQuote('\"')setRecordSeparator('\n')
- Since:
- 1.3
- See Also:
-
MONGODB_CSV
Default MongoDB CSV format used by themongoexportoperation.Parsing is not supported yet.
This is a comma-delimited format. Values are double quoted only if needed and special characters are escaped with
'"'. A header line with field names is expected.As of 2024-04-05, the MongoDB documentation for
mongoimportstates:The csv parser accepts that data that complies with RFC RFC-4180. As a result, backslashes are not a valid escape character. If you use double-quotes to enclose fields in the CSV data, you must escape internal double-quote marks by prepending another double-quote.
The
CSVFormat.Buildersettings are theDEFAULTwith:setDelimiter(',')setEscape('"')setQuote('"')setQuoteMode(QuoteMode.MINIMAL)
- Since:
- 1.7
- See Also:
-
MONGODB_TSV
Default MongoDB TSV format used by themongoexportoperation.Parsing is not supported yet.
This is a tab-delimited format. Values are double quoted only if needed and special characters are escaped with
'"'. A header line with field names is expected.The
CSVFormat.Buildersettings are theDEFAULTwith:setDelimiter('\t')setEscape('"')setQuote('"')setQuoteMode(QuoteMode.MINIMAL)setSkipHeaderRecord(false)
- Since:
- 1.7
- See Also:
-
MYSQL
Default MySQL format used by theSELECT INTO OUTFILEandLOAD DATA INFILEoperations.This is a tab-delimited format with an LF character as the line separator. Values are not quoted and special characters are escaped with
'\'. The default NULL string is"\\N".The
CSVFormat.Buildersettings are theDEFAULTwith:setDelimiter('\t')setEscape('\\')setIgnoreEmptyLines(false)setQuote(null)setRecordSeparator('\n')setNullString("\\N")setQuoteMode(QuoteMode.ALL_NON_NULL)
- See Also:
-
ORACLE
Default Oracle format used by the SQL*Loader utility.This is a comma-delimited format with the system line separator character as the record separator. Values are double quoted when needed and special characters are escaped with
'"'. The default NULL string is"". Values are trimmed.The
CSVFormat.Buildersettings are theDEFAULTwith:setDelimiter(',')// default isFIELDS TERMINATED BY ','}setEscape('\\')setIgnoreEmptyLines(false)setQuote('"')// default isOPTIONALLY ENCLOSED BY '"'}setNullString("\\N")setTrim(true)setRecordSeparator(System.lineSeparator())setQuoteMode(QuoteMode.MINIMAL)
- Since:
- 1.6
- See Also:
-
POSTGRESQL_CSV
Default PostgreSQL CSV format used by theCOPYoperation.This is a comma-delimited format with an LF character as the line separator. Values are double quoted and special characters are not escaped. The default NULL string is
"".The
CSVFormat.Buildersettings are theDEFAULTwith:setDelimiter(',')setEscape(null)setIgnoreEmptyLines(false)setQuote('"')setRecordSeparator('\n')setNullString("")setQuoteMode(QuoteMode.ALL_NON_NULL)
- Since:
- 1.5
- See Also:
-
POSTGRESQL_TEXT
Default PostgreSQL Text format used by theCOPYoperation.This is a tab-delimited format with an LF character as the line separator. Values are not quoted and special characters are escaped with
'\\'. The default NULL string is"\\N".The
CSVFormat.Buildersettings are theDEFAULTwith:setDelimiter('\t')setEscape('\\')setIgnoreEmptyLines(false)setQuote(null)setRecordSeparator('\n')setNullString("\\N")setQuoteMode(QuoteMode.ALL_NON_NULL)
- Since:
- 1.5
- See Also:
-
RFC4180
Comma separated format as defined by RFC 4180.The
CSVFormat.Buildersettings are theDEFAULTwith:setDelimiter(',')setQuote('"')setRecordSeparator("\r\n")setIgnoreEmptyLines(false)
- See Also:
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
TDF
Tab-delimited format (TDF).The
CSVFormat.Buildersettings are theDEFAULTwith:setDelimiter('\t')setIgnoreSurroundingSpaces(true)
- See Also:
-
duplicateHeaderMode
How duplicate headers are handled. -
allowMissingColumnNames
private final boolean allowMissingColumnNamesWhether missing column names are allowed when parsing the header line. -
autoFlush
private final boolean autoFlushWhether to flush on close. -
commentMarker
Set to null if commenting is disabled. -
delimiter
The character delimiting the values (typically ";", "," or "\t"). -
escapeCharacter
Set to null if escaping is disabled. -
headers
Array of header column names. -
headerComments
Array of header comment lines. -
ignoreEmptyLines
private final boolean ignoreEmptyLinesWhether empty lines between records are ignored when parsing input. -
ignoreHeaderCase
private final boolean ignoreHeaderCaseShould ignore header names case. -
ignoreSurroundingSpaces
private final boolean ignoreSurroundingSpacesShould leading/trailing spaces be ignored around values?. -
nullString
The string to be used for null values. -
quoteCharacter
Set to null if quoting is disabled. -
quotedNullString
Set toquoteCharacter + nullString + quoteCharacter -
quoteMode
The quote policy output fields. -
recordSeparator
For output. -
skipHeaderRecord
private final boolean skipHeaderRecordWhether to skip the header record. -
lenientEof
private final boolean lenientEofWhether reading end-of-file is allowed even when input is malformed, helps Excel compatibility. -
trailingData
private final boolean trailingDataWhether reading trailing data is allowed in records, helps Excel compatibility. -
trailingDelimiter
private final boolean trailingDelimiterWhether to add a trailing delimiter. -
trim
private final boolean trimWhether to trim leading and trailing blanks. -
maxRows
private final long maxRowsThe maximum number of rows to process, excluding the header row.
-
-
Constructor Details
-
CSVFormat
-
-
Method Details
-
clone
Null-safe clone of an array.- Type Parameters:
T- The array element type.- Parameters:
values- the source array- Returns:
- the cloned array.
-
contains
Returns true if the given string contains the search char.- Parameters:
source- the string to check.searchCh- the character to search.- Returns:
- true if
ccontains a line break character
-
containsLineBreak
Returns true if the given string contains a line break character.- Parameters:
source- the string to check.- Returns:
- true if
ccontains a line break character.
-
copy
Creates a null-safe copy of the given instance.- Returns:
- a copy of the given instance or null if the input is null.
-
isBlank
-
isLineBreak
private static boolean isLineBreak(char c) Returns true if the given character is a line break character.- Parameters:
c- the character to check.- Returns:
- true if
cis a line break character.
-
isLineBreak
Returns true if the given character is a line break character.- Parameters:
c- the character to check, may be null.- Returns:
- true if
cis a line break character (and not null).
-
isTrimChar
private static boolean isTrimChar(char ch) Same test as in asString.trim(). -
isTrimChar
Same test as in asString.trim(). -
newFormat
Creates a new CSV format with the specified delimiter.Use this method if you want to create a CSVFormat from scratch. All fields but the delimiter will be initialized with null/false.
- Parameters:
delimiter- the char used for value separation, must not be a line break character- Returns:
- a new CSV format.
- Throws:
IllegalArgumentException- if the delimiter is a line break character- See Also:
-
toStringArray
-
trim
-
valueOf
Gets one of the predefined formats fromCSVFormat.Predefined.- Parameters:
format- name- Returns:
- one of the predefined formats
- Since:
- 1.2
-
append
- Throws:
IOException
-
append
- Throws:
IOException
-
builder
Creates a new Builder for this instance.- Returns:
- a new Builder.
-
copy
CSVFormat copy()Creates a copy of this instance.- Returns:
- a copy of this instance.
-
equals
-
escape
- Throws:
IOException
-
format
Formats the specified values as a CSV record string.- Parameters:
values- the values to format.- Returns:
- the formatted values.
-
format_
- Throws:
IOException
-
getAllowDuplicateHeaderNames
Deprecated.Gets whether duplicate names are allowed in the headers.- Returns:
- whether duplicate header names are allowed
- Since:
- 1.7
-
getAllowMissingColumnNames
public boolean getAllowMissingColumnNames()Gets whether missing column names are allowed when parsing the header line.- Returns:
trueif missing column names are allowed when parsing the header line,falseto throw anIllegalArgumentException.
-
getAutoFlush
public boolean getAutoFlush()Gets whether to flush on close.- Returns:
- whether to flush on close.
- Since:
- 1.6
-
getCommentMarker
Gets the comment marker character,nulldisables comments.The comment start character is only recognized at the start of a line.
Comments are printed first, before headers.
Use
CSVFormat.Builder.setCommentMarker(char)orCSVFormat.Builder.setCommentMarker(Character)to set the comment marker written at the start of each comment line.If the comment marker is not set, then the header comments are ignored.
For example:
builder.setCommentMarker('#').setHeaderComments("Generated by Apache Commons CSV", Instant.ofEpochMilli(0));writes:
# Generated by Apache Commons CSV. # 1970-01-01T00:00:00Z
- Returns:
- the comment start marker, may be
null
-
getDelimiter
Deprecated.UsegetDelimiterString().Gets the first character delimiting the values (typically ';', ',' or '\t').- Returns:
- the first delimiter character.
-
getDelimiterCharArray
char[] getDelimiterCharArray()Gets the character delimiting the values (typically ";", "," or "\t").- Returns:
- the delimiter.
-
getDelimiterString
Gets the character delimiting the values (typically ";", "," or "\t").- Returns:
- the delimiter.
- Since:
- 1.9.0
-
getDuplicateHeaderMode
Gets how duplicate headers are handled.- Returns:
- if duplicate header values are allowed, allowed conditionally, or disallowed.
- Since:
- 1.10.0
-
getEscapeChar
char getEscapeChar()Gets the escape character.- Returns:
- the escape character, may be
0
-
getEscapeCharacter
Gets the escape character.- Returns:
- the escape character, may be
null
-
getHeader
Gets a copy of the header array.- Returns:
- a copy of the header array;
nullif disabled, the empty array if to be read from the file
-
getHeaderComments
Gets a copy of the header comment array to write before the CSV data.This setting is ignored by the parser.
Comments are printed first, before headers.
Use
CSVFormat.Builder.setCommentMarker(char)orCSVFormat.Builder.setCommentMarker(Character)to set the comment marker written at the start of each comment line.If the comment marker is not set, then the header comments are ignored.
For example:
builder.setCommentMarker('#').setHeaderComments("Generated by Apache Commons CSV", Instant.ofEpochMilli(0));writes:
# Generated by Apache Commons CSV. # 1970-01-01T00:00:00Z
- Returns:
- a copy of the header comment array;
nullif disabled.
-
getIgnoreEmptyLines
public boolean getIgnoreEmptyLines()Gets whether empty lines between records are ignored when parsing input.- Returns:
trueif empty lines between records are ignored,falseif they are turned into empty records.
-
getIgnoreHeaderCase
public boolean getIgnoreHeaderCase()Gets whether header names will be accessed ignoring case when parsing input.- Returns:
trueif header names cases are ignored,falseif they are case-sensitive.- Since:
- 1.3
-
getIgnoreSurroundingSpaces
public boolean getIgnoreSurroundingSpaces()Gets whether spaces around values are ignored when parsing input.- Returns:
trueif spaces around values are ignored,falseif they are treated as part of the value.
-
getLenientEof
public boolean getLenientEof()Gets whether reading end-of-file is allowed even when input is malformed, helps Excel compatibility.- Returns:
- whether reading end-of-file is allowed even when input is malformed, helps Excel compatibility.
- Since:
- 1.11.0
-
getMaxRows
public long getMaxRows()Gets the maximum number of rows to process, excluding the header row.Values less than or equal to 0 mean no limit.
- Returns:
- The maximum number of rows to process, excluding the header row.
- Since:
- 1.14.0
-
getNullString
Gets the String to convert to and fromnull.- Reading: Converts strings equal to the given
nullStringtonullwhen reading records. - Writing: Writes
nullas the givennullStringwhen writing records.
- Returns:
- the String to convert to and from
null. No substitution occurs ifnull
- Reading: Converts strings equal to the given
-
getQuoteCharacter
Gets the character used to encapsulate values containing special characters.- Returns:
- the quoteChar character, may be
null
-
getQuoteMode
Gets the quote policy output fields.- Returns:
- the quote policy
-
getRecordSeparator
Gets the record separator delimiting output records.- Returns:
- the record separator
-
getSkipHeaderRecord
public boolean getSkipHeaderRecord()Gets whether to skip the header record.- Returns:
- whether to skip the header record.
-
getTrailingData
public boolean getTrailingData()Gets whether reading trailing data is allowed in records, helps Excel compatibility.- Returns:
- whether reading trailing data is allowed in records, helps Excel compatibility.
- Since:
- 1.11.0
-
getTrailingDelimiter
public boolean getTrailingDelimiter()Gets whether to add a trailing delimiter.- Returns:
- whether to add a trailing delimiter.
- Since:
- 1.3
-
getTrim
public boolean getTrim()Gets whether to trim leading and trailing blanks. This is used byprint(Object, Appendable, boolean)Also by {CSVParser#addRecordValue(boolean)}- Returns:
- whether to trim leading and trailing blanks.
-
hashCode
public int hashCode() -
isCommentMarkerSet
public boolean isCommentMarkerSet()Tests whether comments are supported by this format. Note that the comment introducer character is only recognized at the start of a line.- Returns:
trueis comments are supported,falseotherwise
-
isDelimiter
private boolean isDelimiter(char ch0, CharSequence charSeq, int startIndex, char[] delimiter, int delimiterLength) Tests whether the next characters constitute a delimiter- Parameters:
ch0- the first char (index 0).charSeq- the match char sequencestartIndex- where start to matchdelimiter- the delimiterdelimiterLength- the delimiter length- Returns:
- true if the match is successful
-
isEscapeCharacterSet
public boolean isEscapeCharacterSet()Tests whether escapes are being processed.- Returns:
trueif escapes are processed
-
isNullStringSet
public boolean isNullStringSet()Tests whether a null string has been defined.- Returns:
trueif a nullString is defined
-
isQuoteCharacterSet
public boolean isQuoteCharacterSet()Tests whether a quoteChar has been defined.- Returns:
trueif a quoteChar is defined
-
limit
<T> org.apache.commons.io.function.IOStream<T> limit(org.apache.commons.io.function.IOStream<T> stream) -
parse
Parses the specified content.See also the various static parse methods on
CSVParser.- Parameters:
reader- the input stream- Returns:
- a parser over a stream of
CSVRecords. - Throws:
IOException- If an I/O error occursCSVException- Thrown on invalid input.
-
print
Prints to the specified output.See also
CSVPrinter.- Parameters:
out- the output.- Returns:
- a printer to an output.
- Throws:
IOException- thrown if the optional header cannot be printed.
-
print
- Parameters:
out- the output.charset- A charset.- Returns:
- a printer to an output.
- Throws:
IOException- thrown if the optional header cannot be printed.- Since:
- 1.5
-
print
- Throws:
IOException
-
print
Prints thevalueas the next value on the line toout. The value will be escaped or encapsulated as needed. Useful when one wants to avoid creating CSVPrinters. Trims the value ifgetTrim()is true.- Parameters:
value- value to output.out- where to print the value.newRecord- if this a new record.- Throws:
IOException- If an I/O error occurs.- Since:
- 1.4
-
print
private void print(Object object, CharSequence value, Appendable out, boolean newRecord) throws IOException - Throws:
IOException
-
print
Prints to the specifiedPathwith givenCharset, returns aCSVPrinterwhich the caller MUST close.See also
CSVPrinter.- Parameters:
out- the output.charset- A charset.- Returns:
- a printer to an output.
- Throws:
IOException- thrown if the optional header cannot be printed.- Since:
- 1.5
-
print
- Throws:
IOException
-
printer
Prints to theSystem.out.See also
CSVPrinter.- Returns:
- a printer to
System.out. - Throws:
IOException- thrown if the optional header cannot be printed.- Since:
- 1.5
-
println
Outputs the trailing delimiter (if set) followed by the record separator (if set).- Parameters:
appendable- where to write- Throws:
IOException- If an I/O error occurs.- Since:
- 1.4
-
printRecord
Prints the givenvaluestooutas a single record of delimiter-separated values followed by the record separator.The values will be quoted if needed. Quotes and new-line characters will be escaped. This method adds the record separator to the output after printing the record, so there is no need to call
println(Appendable).- Parameters:
appendable- where to write.values- values to output.- Throws:
IOException- If an I/O error occurs.- Since:
- 1.4
-
printWithEscapes
- Throws:
IOException
-
printWithEscapes
- Throws:
IOException
-
printWithQuotes
private void printWithQuotes(Object object, CharSequence charSeq, Appendable out, boolean newRecord) throws IOException - Throws:
IOException
-
printWithQuotes
Always use quotes unless QuoteMode is NONE, so we do not have to look ahead.- Parameters:
reader- What to printappendable- Where to print it- Throws:
IOException- If an I/O error occurs
-
toString
-
trim
-
useMaxRows
boolean useMaxRows() -
useRow
boolean useRow(long rowNum) -
validate
Verifies the validity and consistency of the attributes, and throws anIllegalArgumentExceptionif necessary.Because an instance can be used for both writing and parsing, not all conditions can be tested here. For example, allowMissingColumnNames is only used for parsing, so it cannot be used here.
- Throws:
IllegalArgumentException- Throw when any attribute is invalid or inconsistent with other attributes.
-
withAllowDuplicateHeaderNames
Deprecated.Builds a newCSVFormatthat allows duplicate header names.- Returns:
- a new
CSVFormatthat allows duplicate header names - Since:
- 1.7
-
withAllowDuplicateHeaderNames
Deprecated.Builds a newCSVFormatwith duplicate header names behavior set to the given value.- Parameters:
allowDuplicateHeaderNames- the duplicate header names behavior, true to allow, false to disallow.- Returns:
- a new
CSVFormatwith duplicate header names behavior set to the given value. - Since:
- 1.7
-
withAllowMissingColumnNames
Deprecated.Builds a newCSVFormatwith the missing column names behavior of the format set totrue.- Returns:
- A new CSVFormat that is equal to this but with the specified missing column names behavior.
- Since:
- 1.1
- See Also:
-
withAllowMissingColumnNames
Deprecated.Builds a newCSVFormatwith the missing column names behavior of the format set to the given value.- Parameters:
allowMissingColumnNames- the missing column names behavior,trueto allow missing column names in the header line,falseto cause anIllegalArgumentExceptionto be thrown.- Returns:
- A new CSVFormat that is equal to this but with the specified missing column names behavior.
-
withAutoFlush
Deprecated.Builds a newCSVFormatwith whether to flush on close.- Parameters:
autoFlush- whether to flush on close.- Returns:
- A new CSVFormat that is equal to this but with the specified autoFlush setting.
- Since:
- 1.6
-
withCommentMarker
Deprecated.Builds a newCSVFormatwith the comment start marker of the format set to the specified character. Note that the comment start character is only recognized at the start of a line.- Parameters:
commentMarker- the comment start marker- Returns:
- A new CSVFormat that is equal to this one but with the specified character as the comment start marker
- Throws:
IllegalArgumentException- thrown if the specified character is a line break
-
withCommentMarker
Deprecated.Builds a newCSVFormatwith the comment start marker of the format set to the specified character. Note that the comment start character is only recognized at the start of a line.- Parameters:
commentMarker- the comment start marker, usenullto disable- Returns:
- A new CSVFormat that is equal to this one but with the specified character as the comment start marker
- Throws:
IllegalArgumentException- thrown if the specified character is a line break
-
withDelimiter
Deprecated.Builds a newCSVFormatwith the delimiter of the format set to the specified character.- Parameters:
delimiter- the delimiter character- Returns:
- A new CSVFormat that is equal to this with the specified character as a delimiter
- Throws:
IllegalArgumentException- thrown if the specified character is a line break
-
withEscape
Deprecated.Builds a newCSVFormatwith the escape character of the format set to the specified character.- Parameters:
escape- the escape character- Returns:
- A new CSVFormat that is equal to this but with the specified character as the escape character
- Throws:
IllegalArgumentException- thrown if the specified character is a line break
-
withEscape
Deprecated.Builds a newCSVFormatwith the escape character of the format set to the specified character.- Parameters:
escape- the escape character, usenullto disable- Returns:
- A new CSVFormat that is equal to this but with the specified character as the escape character
- Throws:
IllegalArgumentException- thrown if the specified character is a line break
-
withFirstRecordAsHeader
Deprecated.Builds a newCSVFormatusing the first record as header.Calling this method is equivalent to calling:
CSVFormat format = aFormat.builder() .setHeader() .setSkipHeaderRecord(true) .get();- Returns:
- A new CSVFormat that is equal to this but using the first record as header.
- Since:
- 1.3
- See Also:
-
withHeader
Deprecated.Builds a newCSVFormatwith the header of the format defined by the enum class.Example:
public enum MyHeader { Name, Email, Phone } ... CSVFormat format = aFormat.builder().setHeader(MyHeader.class).get();The header is also used by the
CSVPrinter.- Parameters:
headerEnum- the enum defining the header,nullif disabled, empty if parsed automatically, user specified otherwise.- Returns:
- A new CSVFormat that is equal to this but with the specified header
- Since:
- 1.3
- See Also:
-
withHeader
Deprecated.Builds a newCSVFormatwith the header of the format set from the result set metadata. The header can either be parsed automatically from the input file with:CSVFormat format = aFormat.builder().setHeader().get();
or specified manually with:CSVFormat format = aFormat.builder().setHeader(resultSet).get();
The header is also used by the
CSVPrinter.- Parameters:
resultSet- the resultSet for the header,nullif disabled, empty if parsed automatically, user-specified otherwise.- Returns:
- A new CSVFormat that is equal to this but with the specified header
- Throws:
SQLException- SQLException if a database access error occurs or this method is called on a closed result set.- Since:
- 1.1
-
withHeader
Deprecated.Builds a newCSVFormatwith the header of the format set from the result set metadata. The header can either be parsed automatically from the input file with:CSVFormat format = aFormat.builder().setHeader().get()
or specified manually with:CSVFormat format = aFormat.builder().setHeader(resultSetMetaData).get()
The header is also used by the
CSVPrinter.- Parameters:
resultSetMetaData- the metaData for the header,nullif disabled, empty if parsed automatically, user specified otherwise.- Returns:
- A new CSVFormat that is equal to this but with the specified header
- Throws:
SQLException- SQLException if a database access error occurs or this method is called on a closed result set.- Since:
- 1.1
-
withHeader
Deprecated.Builds a newCSVFormatwith the header of the format set to the given values. The header can either be parsed automatically from the input file with:CSVFormat format = aFormat.builder().setHeader().get();
or specified manually with:CSVFormat format = aFormat.builder().setHeader("name", "email", "phone").get();The header is also used by the
CSVPrinter.- Parameters:
header- the header,nullif disabled, empty if parsed automatically, user-specified otherwise.- Returns:
- A new CSVFormat that is equal to this but with the specified header
- See Also:
-
withHeaderComments
Deprecated.Builds a newCSVFormatwith the header comments of the format set to the given values. The comments will be printed first, before the headers. This setting is ignored by the parser.CSVFormat format = aFormat.builder().setHeaderComments("Generated by Apache Commons CSV.", Instant.now()).get();- Parameters:
headerComments- the headerComments which will be printed by the Printer before the actual CSV data.- Returns:
- A new CSVFormat that is equal to this but with the specified header
- Since:
- 1.1
- See Also:
-
withIgnoreEmptyLines
Deprecated.Builds a newCSVFormatwith the empty line skipping behavior of the format set totrue.- Returns:
- A new CSVFormat that is equal to this but with the specified empty line skipping behavior.
- Since:
- 1.1
- See Also:
-
withIgnoreEmptyLines
Deprecated.Builds a newCSVFormatwith the empty line skipping behavior of the format set to the given value.- Parameters:
ignoreEmptyLines- the empty line skipping behavior,trueto ignore the empty lines between the records,falseto translate empty lines to empty records.- Returns:
- A new CSVFormat that is equal to this but with the specified empty line skipping behavior.
-
withIgnoreHeaderCase
Deprecated.Builds a newCSVFormatwith the header ignore case behavior set totrue.- Returns:
- A new CSVFormat that will ignore the new case header name behavior.
- Since:
- 1.3
- See Also:
-
withIgnoreHeaderCase
Deprecated.Builds a newCSVFormatwith whether header names should be accessed ignoring case.- Parameters:
ignoreHeaderCase- the case mapping behavior,trueto access name/values,falseto leave the mapping as is.- Returns:
- A new CSVFormat that will ignore case header name if specified as
true - Since:
- 1.3
-
withIgnoreSurroundingSpaces
Deprecated.Builds a newCSVFormatwith the parser trimming behavior of the format set totrue.- Returns:
- A new CSVFormat that is equal to this but with the specified parser trimming behavior.
- Since:
- 1.1
- See Also:
-
withIgnoreSurroundingSpaces
Deprecated.Builds a newCSVFormatwith the parser trimming behavior of the format set to the given value.- Parameters:
ignoreSurroundingSpaces- the parser trimming behavior,trueto remove the surrounding spaces,falseto leave the spaces as is.- Returns:
- A new CSVFormat that is equal to this but with the specified trimming behavior.
-
withNullString
Deprecated.Builds a newCSVFormatwith conversions to and from null for strings on input and output.- Reading: Converts strings equal to the given
nullStringtonullwhen reading records. - Writing: Writes
nullas the givennullStringwhen writing records.
- Parameters:
nullString- the String to convert to and fromnull. No substitution occurs ifnull- Returns:
- A new CSVFormat that is equal to this but with the specified null conversion string.
- Reading: Converts strings equal to the given
-
withQuote
Deprecated.Builds a newCSVFormatwith the quoteChar of the format set to the specified character.- Parameters:
quoteChar- the quote character- Returns:
- A new CSVFormat that is equal to this but with the specified character as quoteChar
- Throws:
IllegalArgumentException- thrown if the specified character is a line break
-
withQuote
Deprecated.Builds a newCSVFormatwith the quoteChar of the format set to the specified character.- Parameters:
quoteChar- the quote character, usenullto disable.- Returns:
- A new CSVFormat that is equal to this but with the specified character as quoteChar
- Throws:
IllegalArgumentException- thrown if the specified character is a line break
-
withQuoteMode
Deprecated.Builds a newCSVFormatwith the output quote policy of the format set to the specified value.- Parameters:
quoteMode- the quote policy to use for output.- Returns:
- A new CSVFormat that is equal to this but with the specified quote policy
-
withRecordSeparator
Deprecated.Builds a newCSVFormatwith the record separator of the format set to the specified character.Note: This setting is only used during printing and does not affect parsing. Parsing currently only works for inputs with '\n', '\r' and "\r\n"
- Parameters:
recordSeparator- the record separator to use for output.- Returns:
- A new CSVFormat that is equal to this but with the specified output record separator
-
withRecordSeparator
Deprecated.Builds a newCSVFormatwith the record separator of the format set to the specified String.Note: This setting is only used during printing and does not affect parsing. Parsing currently only works for inputs with '\n', '\r' and "\r\n"
- Parameters:
recordSeparator- the record separator to use for output.- Returns:
- A new CSVFormat that is equal to this but with the specified output record separator
- Throws:
IllegalArgumentException- if recordSeparator is none of CR, LF or CRLF
-
withSkipHeaderRecord
Deprecated.Builds a newCSVFormatwith skipping the header record set totrue.- Returns:
- A new CSVFormat that is equal to this but with the specified skipHeaderRecord setting.
- Since:
- 1.1
- See Also:
-
withSkipHeaderRecord
Deprecated.Builds a newCSVFormatwith whether to skip the header record.- Parameters:
skipHeaderRecord- whether to skip the header record.- Returns:
- A new CSVFormat that is equal to this but with the specified skipHeaderRecord setting.
- See Also:
-
withSystemRecordSeparator
Deprecated.Builds a newCSVFormatwith the record separator of the format set to the operating system's line separator string, typically CR+LF on Windows and LF on Linux.Note: This setting is only used during printing and does not affect parsing. Parsing currently only works for inputs with '\n', '\r' and "\r\n"
- Returns:
- A new CSVFormat that is equal to this but with the operating system's line separator string.
- Since:
- 1.6
-
withTrailingDelimiter
Deprecated.Builds a newCSVFormatto add a trailing delimiter.- Returns:
- A new CSVFormat that is equal to this but with the trailing delimiter setting.
- Since:
- 1.3
-
withTrailingDelimiter
Deprecated.Builds a newCSVFormatwith whether to add a trailing delimiter.- Parameters:
trailingDelimiter- whether to add a trailing delimiter.- Returns:
- A new CSVFormat that is equal to this but with the specified trailing delimiter setting.
- Since:
- 1.3
-
withTrim
Deprecated.Builds a newCSVFormatto trim leading and trailing blanks. SeegetTrim()for details of where this is used.- Returns:
- A new CSVFormat that is equal to this but with the trim setting on.
- Since:
- 1.3
-
withTrim
Deprecated.Builds a newCSVFormatwith whether to trim leading and trailing blanks. SeegetTrim()for details of where this is used.- Parameters:
trim- whether to trim leading and trailing blanks.- Returns:
- A new CSVFormat that is equal to this but with the specified trim setting.
- Since:
- 1.3
-
getDuplicateHeaderMode().