Class CSVFormat.Builder
- java.lang.Object
-
- org.apache.commons.csv.CSVFormat.Builder
-
-
Field Summary
Fields Modifier and Type Field Description private booleanallowMissingColumnNamesprivate booleanautoFlushprivate java.lang.CharactercommentMarkerprivate java.lang.Stringdelimiterprivate DuplicateHeaderModeduplicateHeaderModeprivate java.lang.CharacterescapeCharacterprivate java.lang.String[]headerCommentsprivate java.lang.String[]headersprivate booleanignoreEmptyLinesprivate booleanignoreHeaderCaseprivate booleanignoreSurroundingSpacesprivate booleanlenientEofprivate longmaxRowsThe maximum number of rows to process, excluding the header row.private java.lang.StringnullStringprivate java.lang.CharacterquoteCharacterprivate java.lang.StringquotedNullStringprivate QuoteModequoteModeprivate java.lang.StringrecordSeparatorprivate booleanskipHeaderRecordprivate booleantrailingDataprivate booleantrailingDelimiterprivate booleantrim
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description CSVFormatbuild()Deprecated.Useget().static CSVFormat.Buildercreate()Creates a new default builder, as forCSVFormat.RFC4180but allowing empty lines.static CSVFormat.Buildercreate(CSVFormat csvFormat)Creates a new builder from the given format.CSVFormatget()Builds a new CSVFormat instance.CSVFormat.BuildersetAllowDuplicateHeaderNames(boolean allowDuplicateHeaderNames)Deprecated.CSVFormat.BuildersetAllowMissingColumnNames(boolean allowMissingColumnNames)Sets the parser missing column names behavior,trueto allow missing column names in the header line,falseto cause anIllegalArgumentExceptionto be thrown.CSVFormat.BuildersetAutoFlush(boolean autoFlush)Sets whether to flush on close.CSVFormat.BuildersetCommentMarker(char commentMarker)Sets the comment marker character, usenullto disable comments.CSVFormat.BuildersetCommentMarker(java.lang.Character commentMarker)Sets the comment marker character, usenullto disable comments.CSVFormat.BuildersetDelimiter(char delimiter)Sets the delimiter character.CSVFormat.BuildersetDelimiter(java.lang.String delimiter)Sets the delimiter character.CSVFormat.BuildersetDuplicateHeaderMode(DuplicateHeaderMode duplicateHeaderMode)Sets the duplicate header names behavior.CSVFormat.BuildersetEscape(char escapeCharacter)Sets the escape character.CSVFormat.BuildersetEscape(java.lang.Character escapeCharacter)Sets the escape character.CSVFormat.BuildersetHeader(java.lang.Class<? extends java.lang.Enum<?>> headerEnum)Sets the header defined by the givenEnumclass.CSVFormat.BuildersetHeader(java.lang.String... header)Sets the header to the given values.CSVFormat.BuildersetHeader(java.sql.ResultSet resultSet)Sets the header from the result set metadata.CSVFormat.BuildersetHeader(java.sql.ResultSetMetaData resultSetMetaData)Sets the header from the result set metadata.CSVFormat.BuildersetHeaderComments(java.lang.Object... headerComments)Sets the header comments to write before the CSV data.CSVFormat.BuildersetHeaderComments(java.lang.String... headerComments)Sets the header comments to write before the CSV data.CSVFormat.BuildersetIgnoreEmptyLines(boolean ignoreEmptyLines)Sets the empty line skipping behavior,trueto ignore the empty lines between the records,falseto translate empty lines to empty records.CSVFormat.BuildersetIgnoreHeaderCase(boolean ignoreHeaderCase)Sets the parser case mapping behavior,trueto access name/values,falseto leave the mapping as is.CSVFormat.BuildersetIgnoreSurroundingSpaces(boolean ignoreSurroundingSpaces)Sets the parser trimming behavior,trueto remove the surrounding spaces,falseto leave the spaces as is.CSVFormat.BuildersetLenientEof(boolean lenientEof)Sets whether reading end-of-file is allowed even when input is malformed, helps Excel compatibility.CSVFormat.BuildersetMaxRows(long maxRows)Sets the maximum number of rows to process, excluding the header row.CSVFormat.BuildersetNullString(java.lang.String nullString)Sets the String to convert to and fromnull.CSVFormat.BuildersetQuote(char quoteCharacter)Sets the quote character.CSVFormat.BuildersetQuote(java.lang.Character quoteCharacter)Sets the quote character, usenullto disable.CSVFormat.BuildersetQuoteMode(QuoteMode quoteMode)Sets the quote policy to use for output.CSVFormat.BuildersetRecordSeparator(char recordSeparator)Sets the record separator to use for output.CSVFormat.BuildersetRecordSeparator(java.lang.String recordSeparator)Sets the record separator to use for output.CSVFormat.BuildersetSkipHeaderRecord(boolean skipHeaderRecord)Sets whether to skip the header record.CSVFormat.BuildersetTrailingData(boolean trailingData)Sets whether reading trailing data is allowed in records, helps Excel compatibility.CSVFormat.BuildersetTrailingDelimiter(boolean trailingDelimiter)Sets whether to add a trailing delimiter.CSVFormat.BuildersetTrim(boolean trim)Sets whether to trim leading and trailing blanks.
-
-
-
Field Detail
-
allowMissingColumnNames
private boolean allowMissingColumnNames
-
autoFlush
private boolean autoFlush
-
commentMarker
private java.lang.Character commentMarker
-
delimiter
private java.lang.String delimiter
-
duplicateHeaderMode
private DuplicateHeaderMode duplicateHeaderMode
-
escapeCharacter
private java.lang.Character escapeCharacter
-
headerComments
private java.lang.String[] headerComments
-
headers
private java.lang.String[] headers
-
ignoreEmptyLines
private boolean ignoreEmptyLines
-
ignoreHeaderCase
private boolean ignoreHeaderCase
-
ignoreSurroundingSpaces
private boolean ignoreSurroundingSpaces
-
nullString
private java.lang.String nullString
-
quoteCharacter
private java.lang.Character quoteCharacter
-
quotedNullString
private java.lang.String quotedNullString
-
quoteMode
private QuoteMode quoteMode
-
recordSeparator
private java.lang.String recordSeparator
-
skipHeaderRecord
private boolean skipHeaderRecord
-
lenientEof
private boolean lenientEof
-
trailingData
private boolean trailingData
-
trailingDelimiter
private boolean trailingDelimiter
-
trim
private boolean trim
-
maxRows
private long maxRows
The maximum number of rows to process, excluding the header row.
-
-
Constructor Detail
-
Builder
private Builder()
-
Builder
private Builder(CSVFormat csvFormat)
-
-
Method Detail
-
create
public static CSVFormat.Builder create()
Creates a new default builder, as forCSVFormat.RFC4180but allowing empty lines.The
CSVFormat.Buildersettings are:setDelimiter(',')setQuote('"')setRecordSeparator("\r\n")setIgnoreEmptyLines(true)setDuplicateHeaderMode(DuplicateHeaderMode.ALLOW_ALL)- All other values take their Java defaults,
falsefor booleans,nullfor object references.
- Returns:
- a copy of the builder
- See Also:
CSVFormat.Predefined.Default,DuplicateHeaderMode.ALLOW_ALL
-
create
public static CSVFormat.Builder create(CSVFormat csvFormat)
Creates a new builder from the given format.- Parameters:
csvFormat- the source format.- Returns:
- a new builder.
-
build
@Deprecated public CSVFormat build()
Deprecated.Useget().Builds a new CSVFormat instance.- Returns:
- a new CSVFormat instance.
-
get
public CSVFormat get()
Builds a new CSVFormat instance.- Specified by:
getin interfacejava.util.function.Supplier<CSVFormat>- Returns:
- a new CSVFormat instance.
- Since:
- 1.13.0
-
setAllowDuplicateHeaderNames
@Deprecated public CSVFormat.Builder setAllowDuplicateHeaderNames(boolean allowDuplicateHeaderNames)
Deprecated.Sets the duplicate header names behavior, true to allow, false to disallow.- Parameters:
allowDuplicateHeaderNames- the duplicate header names behavior, true to allow, false to disallow.- Returns:
- This instance.
-
setAllowMissingColumnNames
public CSVFormat.Builder setAllowMissingColumnNames(boolean allowMissingColumnNames)
Sets the parser missing column names behavior,trueto allow missing column names in the header line,falseto cause anIllegalArgumentExceptionto be thrown.- Parameters:
allowMissingColumnNames- the missing column names behavior,trueto allow missing column names in the header line,falseto cause anIllegalArgumentExceptionto be thrown.- Returns:
- This instance.
-
setAutoFlush
public CSVFormat.Builder setAutoFlush(boolean autoFlush)
Sets whether to flush on close.- Parameters:
autoFlush- whether to flush on close.- Returns:
- This instance.
-
setCommentMarker
public CSVFormat.Builder setCommentMarker(char commentMarker)
Sets the comment marker character, usenullto disable comments.The comment start character is only recognized at the start of a line.
Comments are printed first, before headers.
Use
setCommentMarker(char)orsetCommentMarker(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
- Parameters:
commentMarker- the comment start marker, usenullto disable.- Returns:
- This instance.
- Throws:
java.lang.IllegalArgumentException- thrown if the specified character is a line break
-
setCommentMarker
public CSVFormat.Builder setCommentMarker(java.lang.Character commentMarker)
Sets the comment marker character, usenullto disable comments.The comment start character is only recognized at the start of a line.
Comments are printed first, before headers.
Use
setCommentMarker(char)orsetCommentMarker(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
- Parameters:
commentMarker- the comment start marker, usenullto disable.- Returns:
- This instance.
- Throws:
java.lang.IllegalArgumentException- thrown if the specified character is a line break
-
setDelimiter
public CSVFormat.Builder setDelimiter(char delimiter)
Sets the delimiter character.- Parameters:
delimiter- the delimiter character.- Returns:
- This instance.
-
setDelimiter
public CSVFormat.Builder setDelimiter(java.lang.String delimiter)
Sets the delimiter character.- Parameters:
delimiter- the delimiter character.- Returns:
- This instance.
-
setDuplicateHeaderMode
public CSVFormat.Builder setDuplicateHeaderMode(DuplicateHeaderMode duplicateHeaderMode)
Sets the duplicate header names behavior.- Parameters:
duplicateHeaderMode- the duplicate header names behavior- Returns:
- This instance.
- Since:
- 1.10.0
-
setEscape
public CSVFormat.Builder setEscape(char escapeCharacter)
Sets the escape character.- Parameters:
escapeCharacter- the escape character.- Returns:
- This instance.
- Throws:
java.lang.IllegalArgumentException- thrown if the specified character is a line break
-
setEscape
public CSVFormat.Builder setEscape(java.lang.Character escapeCharacter)
Sets the escape character.- Parameters:
escapeCharacter- the escape character.- Returns:
- This instance.
- Throws:
java.lang.IllegalArgumentException- thrown if the specified character is a line break
-
setHeader
public CSVFormat.Builder setHeader(java.lang.Class<? extends java.lang.Enum<?>> headerEnum)
Sets the header defined by the givenEnumclass.Example:
public enum HeaderEnum { Name, Email, Phone } Builder builder = builder.setHeader(HeaderEnum.class);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:
- This instance.
-
setHeader
public CSVFormat.Builder setHeader(java.sql.ResultSet resultSet) throws java.sql.SQLException
Sets the header from the result set metadata. The header can be parsed automatically from the input file with:builder.setHeader();
or specified manually with:builder.setHeader(resultSet);
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:
- This instance.
- Throws:
java.sql.SQLException- SQLException if a database access error occurs or this method is called on a closed result set.
-
setHeader
public CSVFormat.Builder setHeader(java.sql.ResultSetMetaData resultSetMetaData) throws java.sql.SQLException
Sets the header from the result set metadata. The header can be parsed automatically from the input file with:builder.setHeader();
or specified manually with:builder.setHeader(resultSetMetaData);
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:
- This instance.
- Throws:
java.sql.SQLException- SQLException if a database access error occurs or this method is called on a closed result set.
-
setHeader
public CSVFormat.Builder setHeader(java.lang.String... header)
Sets the header to the given values. The header can be parsed automatically from the input file with:builder.setHeader();
or specified manually with:builder.setHeader("name", "email", "phone");The header is also used by the
CSVPrinter.This method keeps a copy of the input array.
- Parameters:
header- the header,nullif disabled, empty if parsed automatically, user-specified otherwise.- Returns:
- This instance.
-
setHeaderComments
public CSVFormat.Builder setHeaderComments(java.lang.Object... headerComments)
Sets the header comments to write before the CSV data.This setting is ignored by the parser.
Comments are printed first, before headers.
Use
setCommentMarker(char)orsetCommentMarker(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
This method keeps a copy of the input array.
- Parameters:
headerComments- the headerComments which will be printed by the Printer before the CSV data.- Returns:
- This instance.
-
setHeaderComments
public CSVFormat.Builder setHeaderComments(java.lang.String... headerComments)
Sets the header comments to write before the CSV data.This setting is ignored by the parser.
Comments are printed first, before headers.
Use
setCommentMarker(char)orsetCommentMarker(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).toString());writes:
# Generated by Apache Commons CSV. # 1970-01-01T00:00:00Z
This method keeps a copy of the input array.
- Parameters:
headerComments- the headerComments which will be printed by the Printer before the CSV data.- Returns:
- This instance.
-
setIgnoreEmptyLines
public CSVFormat.Builder setIgnoreEmptyLines(boolean ignoreEmptyLines)
Sets the empty line skipping behavior,trueto ignore the empty lines between the records,falseto translate empty lines to empty records.- Parameters:
ignoreEmptyLines- the empty line skipping behavior,trueto ignore the empty lines between the records,falseto translate empty lines to empty records.- Returns:
- This instance.
-
setIgnoreHeaderCase
public CSVFormat.Builder setIgnoreHeaderCase(boolean ignoreHeaderCase)
Sets the parser case mapping behavior,trueto access name/values,falseto leave the mapping as is.- Parameters:
ignoreHeaderCase- the case mapping behavior,trueto access name/values,falseto leave the mapping as is.- Returns:
- This instance.
-
setIgnoreSurroundingSpaces
public CSVFormat.Builder setIgnoreSurroundingSpaces(boolean ignoreSurroundingSpaces)
Sets the parser trimming behavior,trueto remove the surrounding spaces,falseto leave the spaces as is.- Parameters:
ignoreSurroundingSpaces- the parser trimming behavior,trueto remove the surrounding spaces,falseto leave the spaces as is.- Returns:
- This instance.
-
setLenientEof
public CSVFormat.Builder setLenientEof(boolean lenientEof)
Sets whether reading end-of-file is allowed even when input is malformed, helps Excel compatibility.- Parameters:
lenientEof- whether reading end-of-file is allowed even when input is malformed, helps Excel compatibility.- Returns:
- This instance.
- Since:
- 1.11.0
-
setMaxRows
public CSVFormat.Builder setMaxRows(long maxRows)
Sets the maximum number of rows to process, excluding the header row.Values less than or equal to 0 mean no limit.
- Parameters:
maxRows- the maximum number of rows to process, excluding the header row.- Returns:
- This instance.
- Since:
- 1.14.0
-
setNullString
public CSVFormat.Builder setNullString(java.lang.String nullString)
Sets the String to convert to and fromnull. No substitution occurs ifnull.- 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:
- This instance.
- Reading: Converts strings equal to the given
-
setQuote
public CSVFormat.Builder setQuote(char quoteCharacter)
Sets the quote character.- Parameters:
quoteCharacter- the quote character.- Returns:
- This instance.
-
setQuote
public CSVFormat.Builder setQuote(java.lang.Character quoteCharacter)
Sets the quote character, usenullto disable.- Parameters:
quoteCharacter- the quote character, usenullto disable.- Returns:
- This instance.
-
setQuoteMode
public CSVFormat.Builder setQuoteMode(QuoteMode quoteMode)
Sets the quote policy to use for output.- Parameters:
quoteMode- the quote policy to use for output.- Returns:
- This instance.
-
setRecordSeparator
public CSVFormat.Builder setRecordSeparator(char recordSeparator)
Sets the record separator to use for output.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:
- This instance.
-
setRecordSeparator
public CSVFormat.Builder setRecordSeparator(java.lang.String recordSeparator)
Sets the record separator to use for output.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:
- This instance.
-
setSkipHeaderRecord
public CSVFormat.Builder setSkipHeaderRecord(boolean skipHeaderRecord)
Sets whether to skip the header record.- Parameters:
skipHeaderRecord- whether to skip the header record.- Returns:
- This instance.
-
setTrailingData
public CSVFormat.Builder setTrailingData(boolean trailingData)
Sets whether reading trailing data is allowed in records, helps Excel compatibility.- Parameters:
trailingData- whether reading trailing data is allowed in records, helps Excel compatibility.- Returns:
- This instance.
- Since:
- 1.11.0
-
setTrailingDelimiter
public CSVFormat.Builder setTrailingDelimiter(boolean trailingDelimiter)
Sets whether to add a trailing delimiter.- Parameters:
trailingDelimiter- whether to add a trailing delimiter.- Returns:
- This instance.
-
setTrim
public CSVFormat.Builder setTrim(boolean trim)
Sets whether to trim leading and trailing blanks.- Parameters:
trim- whether to trim leading and trailing blanks.- Returns:
- This instance.
-
-