Modified: 
websites/production/commons/content/proper/commons-csv/apidocs/src-html/org/apache/commons/csv/CSVFormat.Builder.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-csv/apidocs/src-html/org/apache/commons/csv/CSVFormat.Builder.html
 (original)
+++ 
websites/production/commons/content/proper/commons-csv/apidocs/src-html/org/apache/commons/csv/CSVFormat.Builder.html
 Wed Mar 19 22:20:06 2025
@@ -1,12 +1,12 @@
 <!DOCTYPE HTML>
 <html lang>
 <head>
-<!-- Generated by javadoc (23) -->
+<!-- Generated by javadoc (17) -->
 <title>Source code</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta name="description" content="source: package: org.apache.commons.csv, 
class: CSVFormat, class: Builder">
 <meta name="generator" content="javadoc/SourceToHTMLConverter">
-<link rel="stylesheet" type="text/css" 
href="../../../../../resource-files/stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" 
title="Style">
 </head>
 <body class="source-page">
 <main role="main">
@@ -56,1039 +56,1039 @@
 <span class="source-line-no">043</span><span id="line-43"></span>
 <span class="source-line-no">044</span><span id="line-44">import 
org.apache.commons.codec.binary.Base64OutputStream;</span>
 <span class="source-line-no">045</span><span id="line-45">import 
org.apache.commons.io.IOUtils;</span>
-<span class="source-line-no">046</span><span id="line-46">import 
org.apache.commons.io.function.Uncheck;</span>
-<span class="source-line-no">047</span><span id="line-47">import 
org.apache.commons.io.output.AppendableOutputStream;</span>
-<span class="source-line-no">048</span><span id="line-48"></span>
-<span class="source-line-no">049</span><span id="line-49">/**</span>
-<span class="source-line-no">050</span><span id="line-50"> * Specifies the 
format of a CSV file for parsing and writing.</span>
-<span class="source-line-no">051</span><span id="line-51"> *</span>
-<span class="source-line-no">052</span><span id="line-52"> * &lt;h2&gt;Using 
predefined formats&lt;/h2&gt;</span>
-<span class="source-line-no">053</span><span id="line-53"> *</span>
-<span class="source-line-no">054</span><span id="line-54"> * &lt;p&gt;</span>
-<span class="source-line-no">055</span><span id="line-55"> * You can use one 
of the predefined formats:</span>
-<span class="source-line-no">056</span><span id="line-56"> * &lt;/p&gt;</span>
-<span class="source-line-no">057</span><span id="line-57"> *</span>
-<span class="source-line-no">058</span><span id="line-58"> * &lt;ul&gt;</span>
-<span class="source-line-no">059</span><span id="line-59"> * &lt;li&gt;{@link 
#DEFAULT}&lt;/li&gt;</span>
-<span class="source-line-no">060</span><span id="line-60"> * &lt;li&gt;{@link 
#EXCEL}&lt;/li&gt;</span>
-<span class="source-line-no">061</span><span id="line-61"> * &lt;li&gt;{@link 
#INFORMIX_UNLOAD}&lt;/li&gt;</span>
-<span class="source-line-no">062</span><span id="line-62"> * &lt;li&gt;{@link 
#INFORMIX_UNLOAD_CSV}&lt;/li&gt;</span>
-<span class="source-line-no">063</span><span id="line-63"> * &lt;li&gt;{@link 
#MONGODB_CSV}&lt;/li&gt;</span>
-<span class="source-line-no">064</span><span id="line-64"> * &lt;li&gt;{@link 
#MONGODB_TSV}&lt;/li&gt;</span>
-<span class="source-line-no">065</span><span id="line-65"> * &lt;li&gt;{@link 
#MYSQL}&lt;/li&gt;</span>
-<span class="source-line-no">066</span><span id="line-66"> * &lt;li&gt;{@link 
#ORACLE}&lt;/li&gt;</span>
-<span class="source-line-no">067</span><span id="line-67"> * &lt;li&gt;{@link 
#POSTGRESQL_CSV}&lt;/li&gt;</span>
-<span class="source-line-no">068</span><span id="line-68"> * &lt;li&gt;{@link 
#POSTGRESQL_TEXT}&lt;/li&gt;</span>
-<span class="source-line-no">069</span><span id="line-69"> * &lt;li&gt;{@link 
#RFC4180}&lt;/li&gt;</span>
-<span class="source-line-no">070</span><span id="line-70"> * &lt;li&gt;{@link 
#TDF}&lt;/li&gt;</span>
-<span class="source-line-no">071</span><span id="line-71"> * &lt;/ul&gt;</span>
-<span class="source-line-no">072</span><span id="line-72"> *</span>
-<span class="source-line-no">073</span><span id="line-73"> * &lt;p&gt;</span>
-<span class="source-line-no">074</span><span id="line-74"> * For 
example:</span>
-<span class="source-line-no">075</span><span id="line-75"> * &lt;/p&gt;</span>
-<span class="source-line-no">076</span><span id="line-76"> *</span>
-<span class="source-line-no">077</span><span id="line-77"> * &lt;pre&gt;</span>
-<span class="source-line-no">078</span><span id="line-78"> * CSVParser parser 
= CSVFormat.EXCEL.parse(reader);</span>
-<span class="source-line-no">079</span><span id="line-79"> * 
&lt;/pre&gt;</span>
-<span class="source-line-no">080</span><span id="line-80"> *</span>
-<span class="source-line-no">081</span><span id="line-81"> * &lt;p&gt;</span>
-<span class="source-line-no">082</span><span id="line-82"> * The {@link 
CSVParser} provides static methods to parse other input types, for 
example:</span>
-<span class="source-line-no">083</span><span id="line-83"> * &lt;/p&gt;</span>
-<span class="source-line-no">084</span><span id="line-84"> *</span>
-<span class="source-line-no">085</span><span id="line-85"> * &lt;pre&gt;</span>
-<span class="source-line-no">086</span><span id="line-86"> * CSVParser parser 
= CSVParser.parse(file, StandardCharsets.US_ASCII, CSVFormat.EXCEL);</span>
-<span class="source-line-no">087</span><span id="line-87"> * 
&lt;/pre&gt;</span>
-<span class="source-line-no">088</span><span id="line-88"> *</span>
-<span class="source-line-no">089</span><span id="line-89"> * 
&lt;h2&gt;Defining formats&lt;/h2&gt;</span>
-<span class="source-line-no">090</span><span id="line-90"> *</span>
-<span class="source-line-no">091</span><span id="line-91"> * &lt;p&gt;</span>
-<span class="source-line-no">092</span><span id="line-92"> * You can extend a 
format by calling the {@code set} methods. For example:</span>
-<span class="source-line-no">093</span><span id="line-93"> * &lt;/p&gt;</span>
-<span class="source-line-no">094</span><span id="line-94"> *</span>
-<span class="source-line-no">095</span><span id="line-95"> * 
&lt;pre&gt;{@code</span>
-<span class="source-line-no">096</span><span id="line-96"> * 
CSVFormat.EXCEL.builder().setNullString("N/A").setIgnoreSurroundingSpaces(true).get();</span>
-<span class="source-line-no">097</span><span id="line-97"> * 
}&lt;/pre&gt;</span>
-<span class="source-line-no">098</span><span id="line-98"> *</span>
-<span class="source-line-no">099</span><span id="line-99"> * 
&lt;h2&gt;Defining column names&lt;/h2&gt;</span>
-<span class="source-line-no">100</span><span id="line-100"> *</span>
-<span class="source-line-no">101</span><span id="line-101"> * &lt;p&gt;</span>
-<span class="source-line-no">102</span><span id="line-102"> * To define the 
column names you want to use to access records, write:</span>
-<span class="source-line-no">103</span><span id="line-103"> * &lt;/p&gt;</span>
-<span class="source-line-no">104</span><span id="line-104"> *</span>
-<span class="source-line-no">105</span><span id="line-105"> * 
&lt;pre&gt;{@code</span>
-<span class="source-line-no">106</span><span id="line-106"> * 
CSVFormat.EXCEL.builder().setHeader("Col1", "Col2", "Col3").get();</span>
-<span class="source-line-no">107</span><span id="line-107"> * 
}&lt;/pre&gt;</span>
-<span class="source-line-no">108</span><span id="line-108"> *</span>
-<span class="source-line-no">109</span><span id="line-109"> * &lt;p&gt;</span>
-<span class="source-line-no">110</span><span id="line-110"> * Calling {@link 
Builder#setHeader(String...)} lets you use the given names to address values in 
a {@link CSVRecord}, and assumes that your CSV source does not</span>
-<span class="source-line-no">111</span><span id="line-111"> * contain a first 
record that also defines column names.</span>
-<span class="source-line-no">112</span><span id="line-112"> *</span>
-<span class="source-line-no">113</span><span id="line-113"> * If it does, then 
you are overriding this metadata with your names and you should skip the first 
record by calling</span>
-<span class="source-line-no">114</span><span id="line-114"> * {@link 
Builder#setSkipHeaderRecord(boolean)} with {@code true}.</span>
-<span class="source-line-no">115</span><span id="line-115"> * &lt;/p&gt;</span>
-<span class="source-line-no">116</span><span id="line-116"> *</span>
-<span class="source-line-no">117</span><span id="line-117"> * 
&lt;h2&gt;Parsing&lt;/h2&gt;</span>
-<span class="source-line-no">118</span><span id="line-118"> *</span>
-<span class="source-line-no">119</span><span id="line-119"> * &lt;p&gt;</span>
-<span class="source-line-no">120</span><span id="line-120"> * You can use a 
format directly to parse a reader. For example, to parse an Excel file with 
columns header, write:</span>
-<span class="source-line-no">121</span><span id="line-121"> * &lt;/p&gt;</span>
-<span class="source-line-no">122</span><span id="line-122"> *</span>
-<span class="source-line-no">123</span><span id="line-123"> * 
&lt;pre&gt;{@code</span>
-<span class="source-line-no">124</span><span id="line-124"> * Reader in = 
...;</span>
-<span class="source-line-no">125</span><span id="line-125"> * 
CSVFormat.EXCEL.builder().setHeader("Col1", "Col2", 
"Col3").get().parse(in);</span>
-<span class="source-line-no">126</span><span id="line-126"> * 
}&lt;/pre&gt;</span>
-<span class="source-line-no">127</span><span id="line-127"> *</span>
-<span class="source-line-no">128</span><span id="line-128"> * &lt;p&gt;</span>
-<span class="source-line-no">129</span><span id="line-129"> * For other input 
types, like resources, files, and URLs, use the static methods on {@link 
CSVParser}.</span>
-<span class="source-line-no">130</span><span id="line-130"> * &lt;/p&gt;</span>
-<span class="source-line-no">131</span><span id="line-131"> *</span>
-<span class="source-line-no">132</span><span id="line-132"> * 
&lt;h2&gt;Referencing columns safely&lt;/h2&gt;</span>
-<span class="source-line-no">133</span><span id="line-133"> *</span>
-<span class="source-line-no">134</span><span id="line-134"> * &lt;p&gt;</span>
-<span class="source-line-no">135</span><span id="line-135"> * If your source 
contains a header record, you can simplify your code and safely reference 
columns, by using {@link Builder#setHeader(String...)} with no</span>
-<span class="source-line-no">136</span><span id="line-136"> * arguments:</span>
-<span class="source-line-no">137</span><span id="line-137"> * &lt;/p&gt;</span>
-<span class="source-line-no">138</span><span id="line-138"> *</span>
-<span class="source-line-no">139</span><span id="line-139"> * 
&lt;pre&gt;</span>
-<span class="source-line-no">140</span><span id="line-140"> * 
CSVFormat.EXCEL.builder().setHeader().get();</span>
-<span class="source-line-no">141</span><span id="line-141"> * 
&lt;/pre&gt;</span>
-<span class="source-line-no">142</span><span id="line-142"> *</span>
-<span class="source-line-no">143</span><span id="line-143"> * &lt;p&gt;</span>
-<span class="source-line-no">144</span><span id="line-144"> * This causes the 
parser to read the first record and use its values as column names.</span>
-<span class="source-line-no">145</span><span id="line-145"> *</span>
-<span class="source-line-no">146</span><span id="line-146"> * Then, call one 
of the {@link CSVRecord} get method that takes a String column name 
argument:</span>
-<span class="source-line-no">147</span><span id="line-147"> * &lt;/p&gt;</span>
-<span class="source-line-no">148</span><span id="line-148"> *</span>
-<span class="source-line-no">149</span><span id="line-149"> * 
&lt;pre&gt;{@code</span>
-<span class="source-line-no">150</span><span id="line-150"> * String value = 
record.get("Col1");</span>
-<span class="source-line-no">151</span><span id="line-151"> * 
}&lt;/pre&gt;</span>
-<span class="source-line-no">152</span><span id="line-152"> *</span>
-<span class="source-line-no">153</span><span id="line-153"> * &lt;p&gt;</span>
-<span class="source-line-no">154</span><span id="line-154"> * This makes your 
code impervious to changes in column order in the CSV file.</span>
-<span class="source-line-no">155</span><span id="line-155"> * &lt;/p&gt;</span>
-<span class="source-line-no">156</span><span id="line-156"> *</span>
-<span class="source-line-no">157</span><span id="line-157"> * 
&lt;h2&gt;Serialization&lt;/h2&gt;</span>
-<span class="source-line-no">158</span><span id="line-158"> * &lt;p&gt;</span>
-<span class="source-line-no">159</span><span id="line-159"> * This class 
implements the {@link Serializable} interface with the following caveats:</span>
-<span class="source-line-no">160</span><span id="line-160"> * &lt;/p&gt;</span>
-<span class="source-line-no">161</span><span id="line-161"> * &lt;ul&gt;</span>
-<span class="source-line-no">162</span><span id="line-162"> * &lt;li&gt;This 
class will no longer implement Serializable in 2.0.&lt;/li&gt;</span>
-<span class="source-line-no">163</span><span id="line-163"> * 
&lt;li&gt;Serialization is not supported from one version to the 
next.&lt;/li&gt;</span>
-<span class="source-line-no">164</span><span id="line-164"> * 
&lt;/ul&gt;</span>
-<span class="source-line-no">165</span><span id="line-165"> * &lt;p&gt;</span>
-<span class="source-line-no">166</span><span id="line-166"> * The {@code 
serialVersionUID} values are:</span>
-<span class="source-line-no">167</span><span id="line-167"> * &lt;/p&gt;</span>
-<span class="source-line-no">168</span><span id="line-168"> * &lt;ul&gt;</span>
-<span class="source-line-no">169</span><span id="line-169"> * 
&lt;li&gt;Version 1.10.0: {@code 2L}&lt;/li&gt;</span>
-<span class="source-line-no">170</span><span id="line-170"> * 
&lt;li&gt;Version 1.9.0 through 1.0: {@code 1L}&lt;/li&gt;</span>
-<span class="source-line-no">171</span><span id="line-171"> * 
&lt;/ul&gt;</span>
-<span class="source-line-no">172</span><span id="line-172"> *</span>
-<span class="source-line-no">173</span><span id="line-173"> * 
&lt;h2&gt;Notes&lt;/h2&gt;</span>
-<span class="source-line-no">174</span><span id="line-174"> * &lt;p&gt;</span>
-<span class="source-line-no">175</span><span id="line-175"> * This class is 
immutable.</span>
-<span class="source-line-no">176</span><span id="line-176"> * &lt;/p&gt;</span>
-<span class="source-line-no">177</span><span id="line-177"> * &lt;p&gt;</span>
-<span class="source-line-no">178</span><span id="line-178"> * Not all settings 
are used for both parsing and writing.</span>
-<span class="source-line-no">179</span><span id="line-179"> * &lt;/p&gt;</span>
-<span class="source-line-no">180</span><span id="line-180"> */</span>
-<span class="source-line-no">181</span><span id="line-181">public final class 
CSVFormat implements Serializable {</span>
-<span class="source-line-no">182</span><span id="line-182"></span>
-<span class="source-line-no">183</span><span id="line-183">    /**</span>
-<span class="source-line-no">184</span><span id="line-184">     * Builds 
CSVFormat instances.</span>
-<span class="source-line-no">185</span><span id="line-185">     *</span>
-<span class="source-line-no">186</span><span id="line-186">     * @since 
1.9.0</span>
-<span class="source-line-no">187</span><span id="line-187">     */</span>
-<span class="source-line-no">188</span><span id="line-188">    public static 
class Builder implements Supplier&lt;CSVFormat&gt; {</span>
-<span class="source-line-no">189</span><span id="line-189"></span>
-<span class="source-line-no">190</span><span id="line-190">        /**</span>
-<span class="source-line-no">191</span><span id="line-191">         * Creates 
a new default builder, as for {@link #RFC4180} but allowing empty lines.</span>
-<span class="source-line-no">192</span><span id="line-192">         *</span>
-<span class="source-line-no">193</span><span id="line-193">         * 
&lt;p&gt;</span>
-<span class="source-line-no">194</span><span id="line-194">         * The 
{@link Builder} settings are:</span>
-<span class="source-line-no">195</span><span id="line-195">         * 
&lt;/p&gt;</span>
-<span class="source-line-no">196</span><span id="line-196">         * 
&lt;ul&gt;</span>
-<span class="source-line-no">197</span><span id="line-197">         * 
&lt;li&gt;{@link Builder#setDelimiter(char) setDelimiter}{@code 
(',')}&lt;/li&gt;</span>
-<span class="source-line-no">198</span><span id="line-198">         * 
&lt;li&gt;{@link Builder#setQuote(char) setQuote}{@code ('"')}&lt;/li&gt;</span>
-<span class="source-line-no">199</span><span id="line-199">         * 
&lt;li&gt;{@link Builder#setRecordSeparator(String) setRecordSeparator}{@code 
("\r\n")}&lt;/li&gt;</span>
-<span class="source-line-no">200</span><span id="line-200">         * 
&lt;li&gt;{@link Builder#setIgnoreEmptyLines(boolean) 
setIgnoreEmptyLines}{@code (true)}&lt;/li&gt;</span>
-<span class="source-line-no">201</span><span id="line-201">         * 
&lt;li&gt;{@link Builder#setDuplicateHeaderMode(DuplicateHeaderMode) 
setDuplicateHeaderMode}{@code (DuplicateHeaderMode.ALLOW_ALL)}&lt;/li&gt;</span>
-<span class="source-line-no">202</span><span id="line-202">         * 
&lt;li&gt;All other values take their Java defaults, {@code false} for 
booleans, {@code null} for object references.&lt;/li&gt;</span>
-<span class="source-line-no">203</span><span id="line-203">         * 
&lt;/ul&gt;</span>
-<span class="source-line-no">204</span><span id="line-204">         *</span>
-<span class="source-line-no">205</span><span id="line-205">         * @see 
Predefined#Default</span>
-<span class="source-line-no">206</span><span id="line-206">         * @see 
DuplicateHeaderMode#ALLOW_ALL</span>
-<span class="source-line-no">207</span><span id="line-207">         *</span>
-<span class="source-line-no">208</span><span id="line-208">         * @return 
a copy of the builder</span>
-<span class="source-line-no">209</span><span id="line-209">         */</span>
-<span class="source-line-no">210</span><span id="line-210">        public 
static Builder create() {</span>
-<span class="source-line-no">211</span><span id="line-211">            // 
@formatter:off</span>
-<span class="source-line-no">212</span><span id="line-212">            return 
new Builder()</span>
-<span class="source-line-no">213</span><span id="line-213">                    
.setDelimiter(Constants.COMMA)</span>
-<span class="source-line-no">214</span><span id="line-214">                    
.setQuote(Constants.DOUBLE_QUOTE_CHAR)</span>
-<span class="source-line-no">215</span><span id="line-215">                    
.setRecordSeparator(Constants.CRLF)</span>
-<span class="source-line-no">216</span><span id="line-216">                    
.setIgnoreEmptyLines(true)</span>
-<span class="source-line-no">217</span><span id="line-217">                    
.setDuplicateHeaderMode(DuplicateHeaderMode.ALLOW_ALL);</span>
-<span class="source-line-no">218</span><span id="line-218">                    
// @formatter:on</span>
-<span class="source-line-no">219</span><span id="line-219">        }</span>
-<span class="source-line-no">220</span><span id="line-220"></span>
-<span class="source-line-no">221</span><span id="line-221">        /**</span>
-<span class="source-line-no">222</span><span id="line-222">         * Creates 
a new builder from the given format.</span>
-<span class="source-line-no">223</span><span id="line-223">         *</span>
-<span class="source-line-no">224</span><span id="line-224">         * @param 
csvFormat the source format.</span>
-<span class="source-line-no">225</span><span id="line-225">         * @return 
a new builder.</span>
-<span class="source-line-no">226</span><span id="line-226">         */</span>
-<span class="source-line-no">227</span><span id="line-227">        public 
static Builder create(final CSVFormat csvFormat) {</span>
-<span class="source-line-no">228</span><span id="line-228">            return 
new Builder(csvFormat);</span>
-<span class="source-line-no">229</span><span id="line-229">        }</span>
-<span class="source-line-no">230</span><span id="line-230"></span>
-<span class="source-line-no">231</span><span id="line-231">        private 
boolean allowMissingColumnNames;</span>
-<span class="source-line-no">232</span><span id="line-232"></span>
-<span class="source-line-no">233</span><span id="line-233">        private 
boolean autoFlush;</span>
-<span class="source-line-no">234</span><span id="line-234"></span>
-<span class="source-line-no">235</span><span id="line-235">        private 
Character commentMarker;</span>
-<span class="source-line-no">236</span><span id="line-236"></span>
-<span class="source-line-no">237</span><span id="line-237">        private 
String delimiter;</span>
-<span class="source-line-no">238</span><span id="line-238"></span>
-<span class="source-line-no">239</span><span id="line-239">        private 
DuplicateHeaderMode duplicateHeaderMode;</span>
-<span class="source-line-no">240</span><span id="line-240"></span>
-<span class="source-line-no">241</span><span id="line-241">        private 
Character escapeCharacter;</span>
-<span class="source-line-no">242</span><span id="line-242"></span>
-<span class="source-line-no">243</span><span id="line-243">        private 
String[] headerComments;</span>
-<span class="source-line-no">244</span><span id="line-244"></span>
-<span class="source-line-no">245</span><span id="line-245">        private 
String[] headers;</span>
-<span class="source-line-no">246</span><span id="line-246"></span>
-<span class="source-line-no">247</span><span id="line-247">        private 
boolean ignoreEmptyLines;</span>
-<span class="source-line-no">248</span><span id="line-248"></span>
-<span class="source-line-no">249</span><span id="line-249">        private 
boolean ignoreHeaderCase;</span>
-<span class="source-line-no">250</span><span id="line-250"></span>
-<span class="source-line-no">251</span><span id="line-251">        private 
boolean ignoreSurroundingSpaces;</span>
-<span class="source-line-no">252</span><span id="line-252"></span>
-<span class="source-line-no">253</span><span id="line-253">        private 
String nullString;</span>
-<span class="source-line-no">254</span><span id="line-254"></span>
-<span class="source-line-no">255</span><span id="line-255">        private 
Character quoteCharacter;</span>
-<span class="source-line-no">256</span><span id="line-256"></span>
-<span class="source-line-no">257</span><span id="line-257">        private 
String quotedNullString;</span>
-<span class="source-line-no">258</span><span id="line-258"></span>
-<span class="source-line-no">259</span><span id="line-259">        private 
QuoteMode quoteMode;</span>
-<span class="source-line-no">260</span><span id="line-260"></span>
-<span class="source-line-no">261</span><span id="line-261">        private 
String recordSeparator;</span>
-<span class="source-line-no">262</span><span id="line-262"></span>
-<span class="source-line-no">263</span><span id="line-263">        private 
boolean skipHeaderRecord;</span>
-<span class="source-line-no">264</span><span id="line-264"></span>
-<span class="source-line-no">265</span><span id="line-265">        private 
boolean lenientEof;</span>
-<span class="source-line-no">266</span><span id="line-266"></span>
-<span class="source-line-no">267</span><span id="line-267">        private 
boolean trailingData;</span>
-<span class="source-line-no">268</span><span id="line-268"></span>
-<span class="source-line-no">269</span><span id="line-269">        private 
boolean trailingDelimiter;</span>
-<span class="source-line-no">270</span><span id="line-270"></span>
-<span class="source-line-no">271</span><span id="line-271">        private 
boolean trim;</span>
-<span class="source-line-no">272</span><span id="line-272"></span>
-<span class="source-line-no">273</span><span id="line-273">        private 
Builder() {</span>
-<span class="source-line-no">274</span><span id="line-274">            // 
empty</span>
-<span class="source-line-no">275</span><span id="line-275">        }</span>
+<span class="source-line-no">046</span><span id="line-46">import 
org.apache.commons.io.function.IOStream;</span>
+<span class="source-line-no">047</span><span id="line-47">import 
org.apache.commons.io.function.Uncheck;</span>
+<span class="source-line-no">048</span><span id="line-48">import 
org.apache.commons.io.output.AppendableOutputStream;</span>
+<span class="source-line-no">049</span><span id="line-49"></span>
+<span class="source-line-no">050</span><span id="line-50">/**</span>
+<span class="source-line-no">051</span><span id="line-51"> * Specifies the 
format of a CSV file for parsing and writing.</span>
+<span class="source-line-no">052</span><span id="line-52"> *</span>
+<span class="source-line-no">053</span><span id="line-53"> * &lt;h2&gt;Using 
predefined formats&lt;/h2&gt;</span>
+<span class="source-line-no">054</span><span id="line-54"> *</span>
+<span class="source-line-no">055</span><span id="line-55"> * &lt;p&gt;</span>
+<span class="source-line-no">056</span><span id="line-56"> * You can use one 
of the predefined formats:</span>
+<span class="source-line-no">057</span><span id="line-57"> * &lt;/p&gt;</span>
+<span class="source-line-no">058</span><span id="line-58"> *</span>
+<span class="source-line-no">059</span><span id="line-59"> * &lt;ul&gt;</span>
+<span class="source-line-no">060</span><span id="line-60"> * &lt;li&gt;{@link 
#DEFAULT}&lt;/li&gt;</span>
+<span class="source-line-no">061</span><span id="line-61"> * &lt;li&gt;{@link 
#EXCEL}&lt;/li&gt;</span>
+<span class="source-line-no">062</span><span id="line-62"> * &lt;li&gt;{@link 
#INFORMIX_UNLOAD}&lt;/li&gt;</span>
+<span class="source-line-no">063</span><span id="line-63"> * &lt;li&gt;{@link 
#INFORMIX_UNLOAD_CSV}&lt;/li&gt;</span>
+<span class="source-line-no">064</span><span id="line-64"> * &lt;li&gt;{@link 
#MONGODB_CSV}&lt;/li&gt;</span>
+<span class="source-line-no">065</span><span id="line-65"> * &lt;li&gt;{@link 
#MONGODB_TSV}&lt;/li&gt;</span>
+<span class="source-line-no">066</span><span id="line-66"> * &lt;li&gt;{@link 
#MYSQL}&lt;/li&gt;</span>
+<span class="source-line-no">067</span><span id="line-67"> * &lt;li&gt;{@link 
#ORACLE}&lt;/li&gt;</span>
+<span class="source-line-no">068</span><span id="line-68"> * &lt;li&gt;{@link 
#POSTGRESQL_CSV}&lt;/li&gt;</span>
+<span class="source-line-no">069</span><span id="line-69"> * &lt;li&gt;{@link 
#POSTGRESQL_TEXT}&lt;/li&gt;</span>
+<span class="source-line-no">070</span><span id="line-70"> * &lt;li&gt;{@link 
#RFC4180}&lt;/li&gt;</span>
+<span class="source-line-no">071</span><span id="line-71"> * &lt;li&gt;{@link 
#TDF}&lt;/li&gt;</span>
+<span class="source-line-no">072</span><span id="line-72"> * &lt;/ul&gt;</span>
+<span class="source-line-no">073</span><span id="line-73"> *</span>
+<span class="source-line-no">074</span><span id="line-74"> * &lt;p&gt;</span>
+<span class="source-line-no">075</span><span id="line-75"> * For 
example:</span>
+<span class="source-line-no">076</span><span id="line-76"> * &lt;/p&gt;</span>
+<span class="source-line-no">077</span><span id="line-77"> *</span>
+<span class="source-line-no">078</span><span id="line-78"> * &lt;pre&gt;</span>
+<span class="source-line-no">079</span><span id="line-79"> * CSVParser parser 
= CSVFormat.EXCEL.parse(reader);</span>
+<span class="source-line-no">080</span><span id="line-80"> * 
&lt;/pre&gt;</span>
+<span class="source-line-no">081</span><span id="line-81"> *</span>
+<span class="source-line-no">082</span><span id="line-82"> * &lt;p&gt;</span>
+<span class="source-line-no">083</span><span id="line-83"> * The {@link 
CSVParser} provides static methods to parse other input types, for 
example:</span>
+<span class="source-line-no">084</span><span id="line-84"> * &lt;/p&gt;</span>
+<span class="source-line-no">085</span><span id="line-85"> *</span>
+<span class="source-line-no">086</span><span id="line-86"> * &lt;pre&gt;</span>
+<span class="source-line-no">087</span><span id="line-87"> * CSVParser parser 
= CSVParser.parse(file, StandardCharsets.US_ASCII, CSVFormat.EXCEL);</span>
+<span class="source-line-no">088</span><span id="line-88"> * 
&lt;/pre&gt;</span>
+<span class="source-line-no">089</span><span id="line-89"> *</span>
+<span class="source-line-no">090</span><span id="line-90"> * 
&lt;h2&gt;Defining formats&lt;/h2&gt;</span>
+<span class="source-line-no">091</span><span id="line-91"> *</span>
+<span class="source-line-no">092</span><span id="line-92"> * &lt;p&gt;</span>
+<span class="source-line-no">093</span><span id="line-93"> * You can extend a 
format by calling the {@code set} methods. For example:</span>
+<span class="source-line-no">094</span><span id="line-94"> * &lt;/p&gt;</span>
+<span class="source-line-no">095</span><span id="line-95"> *</span>
+<span class="source-line-no">096</span><span id="line-96"> * 
&lt;pre&gt;{@code</span>
+<span class="source-line-no">097</span><span id="line-97"> * 
CSVFormat.EXCEL.builder().setNullString("N/A").setIgnoreSurroundingSpaces(true).get();</span>
+<span class="source-line-no">098</span><span id="line-98"> * 
}&lt;/pre&gt;</span>
+<span class="source-line-no">099</span><span id="line-99"> *</span>
+<span class="source-line-no">100</span><span id="line-100"> * 
&lt;h2&gt;Defining column names&lt;/h2&gt;</span>
+<span class="source-line-no">101</span><span id="line-101"> *</span>
+<span class="source-line-no">102</span><span id="line-102"> * &lt;p&gt;</span>
+<span class="source-line-no">103</span><span id="line-103"> * To define the 
column names you want to use to access records, write:</span>
+<span class="source-line-no">104</span><span id="line-104"> * &lt;/p&gt;</span>
+<span class="source-line-no">105</span><span id="line-105"> *</span>
+<span class="source-line-no">106</span><span id="line-106"> * 
&lt;pre&gt;{@code</span>
+<span class="source-line-no">107</span><span id="line-107"> * 
CSVFormat.EXCEL.builder().setHeader("Col1", "Col2", "Col3").get();</span>
+<span class="source-line-no">108</span><span id="line-108"> * 
}&lt;/pre&gt;</span>
+<span class="source-line-no">109</span><span id="line-109"> *</span>
+<span class="source-line-no">110</span><span id="line-110"> * &lt;p&gt;</span>
+<span class="source-line-no">111</span><span id="line-111"> * Calling {@link 
Builder#setHeader(String...)} lets you use the given names to address values in 
a {@link CSVRecord}, and assumes that your CSV source does not</span>
+<span class="source-line-no">112</span><span id="line-112"> * contain a first 
record that also defines column names.</span>
+<span class="source-line-no">113</span><span id="line-113"> *</span>
+<span class="source-line-no">114</span><span id="line-114"> * If it does, then 
you are overriding this metadata with your names and you should skip the first 
record by calling</span>
+<span class="source-line-no">115</span><span id="line-115"> * {@link 
Builder#setSkipHeaderRecord(boolean)} with {@code true}.</span>
+<span class="source-line-no">116</span><span id="line-116"> * &lt;/p&gt;</span>
+<span class="source-line-no">117</span><span id="line-117"> *</span>
+<span class="source-line-no">118</span><span id="line-118"> * 
&lt;h2&gt;Parsing&lt;/h2&gt;</span>
+<span class="source-line-no">119</span><span id="line-119"> *</span>
+<span class="source-line-no">120</span><span id="line-120"> * &lt;p&gt;</span>
+<span class="source-line-no">121</span><span id="line-121"> * You can use a 
format directly to parse a reader. For example, to parse an Excel file with 
columns header, write:</span>
+<span class="source-line-no">122</span><span id="line-122"> * &lt;/p&gt;</span>
+<span class="source-line-no">123</span><span id="line-123"> *</span>
+<span class="source-line-no">124</span><span id="line-124"> * 
&lt;pre&gt;{@code</span>
+<span class="source-line-no">125</span><span id="line-125"> * Reader in = 
...;</span>
+<span class="source-line-no">126</span><span id="line-126"> * 
CSVFormat.EXCEL.builder().setHeader("Col1", "Col2", 
"Col3").get().parse(in);</span>
+<span class="source-line-no">127</span><span id="line-127"> * 
}&lt;/pre&gt;</span>
+<span class="source-line-no">128</span><span id="line-128"> *</span>
+<span class="source-line-no">129</span><span id="line-129"> * &lt;p&gt;</span>
+<span class="source-line-no">130</span><span id="line-130"> * For other input 
types, like resources, files, and URLs, use the static methods on {@link 
CSVParser}.</span>
+<span class="source-line-no">131</span><span id="line-131"> * &lt;/p&gt;</span>
+<span class="source-line-no">132</span><span id="line-132"> *</span>
+<span class="source-line-no">133</span><span id="line-133"> * 
&lt;h2&gt;Referencing columns safely&lt;/h2&gt;</span>
+<span class="source-line-no">134</span><span id="line-134"> *</span>
+<span class="source-line-no">135</span><span id="line-135"> * &lt;p&gt;</span>
+<span class="source-line-no">136</span><span id="line-136"> * If your source 
contains a header record, you can simplify your code and safely reference 
columns, by using {@link Builder#setHeader(String...)} with no</span>
+<span class="source-line-no">137</span><span id="line-137"> * arguments:</span>
+<span class="source-line-no">138</span><span id="line-138"> * &lt;/p&gt;</span>
+<span class="source-line-no">139</span><span id="line-139"> *</span>
+<span class="source-line-no">140</span><span id="line-140"> * 
&lt;pre&gt;</span>
+<span class="source-line-no">141</span><span id="line-141"> * 
CSVFormat.EXCEL.builder().setHeader().get();</span>
+<span class="source-line-no">142</span><span id="line-142"> * 
&lt;/pre&gt;</span>
+<span class="source-line-no">143</span><span id="line-143"> *</span>
+<span class="source-line-no">144</span><span id="line-144"> * &lt;p&gt;</span>
+<span class="source-line-no">145</span><span id="line-145"> * This causes the 
parser to read the first record and use its values as column names.</span>
+<span class="source-line-no">146</span><span id="line-146"> *</span>
+<span class="source-line-no">147</span><span id="line-147"> * Then, call one 
of the {@link CSVRecord} get method that takes a String column name 
argument:</span>
+<span class="source-line-no">148</span><span id="line-148"> * &lt;/p&gt;</span>
+<span class="source-line-no">149</span><span id="line-149"> *</span>
+<span class="source-line-no">150</span><span id="line-150"> * 
&lt;pre&gt;{@code</span>
+<span class="source-line-no">151</span><span id="line-151"> * String value = 
record.get("Col1");</span>
+<span class="source-line-no">152</span><span id="line-152"> * 
}&lt;/pre&gt;</span>
+<span class="source-line-no">153</span><span id="line-153"> *</span>
+<span class="source-line-no">154</span><span id="line-154"> * &lt;p&gt;</span>
+<span class="source-line-no">155</span><span id="line-155"> * This makes your 
code impervious to changes in column order in the CSV file.</span>
+<span class="source-line-no">156</span><span id="line-156"> * &lt;/p&gt;</span>
+<span class="source-line-no">157</span><span id="line-157"> *</span>
+<span class="source-line-no">158</span><span id="line-158"> * 
&lt;h2&gt;Serialization&lt;/h2&gt;</span>
+<span class="source-line-no">159</span><span id="line-159"> * &lt;p&gt;</span>
+<span class="source-line-no">160</span><span id="line-160"> * This class 
implements the {@link Serializable} interface with the following caveats:</span>
+<span class="source-line-no">161</span><span id="line-161"> * &lt;/p&gt;</span>
+<span class="source-line-no">162</span><span id="line-162"> * &lt;ul&gt;</span>
+<span class="source-line-no">163</span><span id="line-163"> * &lt;li&gt;This 
class will no longer implement Serializable in 2.0.&lt;/li&gt;</span>
+<span class="source-line-no">164</span><span id="line-164"> * 
&lt;li&gt;Serialization is not supported from one version to the 
next.&lt;/li&gt;</span>
+<span class="source-line-no">165</span><span id="line-165"> * 
&lt;/ul&gt;</span>
+<span class="source-line-no">166</span><span id="line-166"> * &lt;p&gt;</span>
+<span class="source-line-no">167</span><span id="line-167"> * The {@code 
serialVersionUID} values are:</span>
+<span class="source-line-no">168</span><span id="line-168"> * &lt;/p&gt;</span>
+<span class="source-line-no">169</span><span id="line-169"> * &lt;ul&gt;</span>
+<span class="source-line-no">170</span><span id="line-170"> * 
&lt;li&gt;Version 1.10.0: {@code 2L}&lt;/li&gt;</span>
+<span class="source-line-no">171</span><span id="line-171"> * 
&lt;li&gt;Version 1.9.0 through 1.0: {@code 1L}&lt;/li&gt;</span>
+<span class="source-line-no">172</span><span id="line-172"> * 
&lt;/ul&gt;</span>
+<span class="source-line-no">173</span><span id="line-173"> *</span>
+<span class="source-line-no">174</span><span id="line-174"> * 
&lt;h2&gt;Notes&lt;/h2&gt;</span>
+<span class="source-line-no">175</span><span id="line-175"> * &lt;p&gt;</span>
+<span class="source-line-no">176</span><span id="line-176"> * This class is 
immutable.</span>
+<span class="source-line-no">177</span><span id="line-177"> * &lt;/p&gt;</span>
+<span class="source-line-no">178</span><span id="line-178"> * &lt;p&gt;</span>
+<span class="source-line-no">179</span><span id="line-179"> * Not all settings 
are used for both parsing and writing.</span>
+<span class="source-line-no">180</span><span id="line-180"> * &lt;/p&gt;</span>
+<span class="source-line-no">181</span><span id="line-181"> */</span>
+<span class="source-line-no">182</span><span id="line-182">public final class 
CSVFormat implements Serializable {</span>
+<span class="source-line-no">183</span><span id="line-183"></span>
+<span class="source-line-no">184</span><span id="line-184">    /**</span>
+<span class="source-line-no">185</span><span id="line-185">     * Builds 
CSVFormat instances.</span>
+<span class="source-line-no">186</span><span id="line-186">     *</span>
+<span class="source-line-no">187</span><span id="line-187">     * @since 
1.9.0</span>
+<span class="source-line-no">188</span><span id="line-188">     */</span>
+<span class="source-line-no">189</span><span id="line-189">    public static 
class Builder implements Supplier&lt;CSVFormat&gt; {</span>
+<span class="source-line-no">190</span><span id="line-190"></span>
+<span class="source-line-no">191</span><span id="line-191">        /**</span>
+<span class="source-line-no">192</span><span id="line-192">         * Creates 
a new default builder, as for {@link #RFC4180} but allowing empty lines.</span>
+<span class="source-line-no">193</span><span id="line-193">         *</span>
+<span class="source-line-no">194</span><span id="line-194">         * 
&lt;p&gt;</span>
+<span class="source-line-no">195</span><span id="line-195">         * The 
{@link Builder} settings are:</span>
+<span class="source-line-no">196</span><span id="line-196">         * 
&lt;/p&gt;</span>
+<span class="source-line-no">197</span><span id="line-197">         * 
&lt;ul&gt;</span>
+<span class="source-line-no">198</span><span id="line-198">         * 
&lt;li&gt;{@link Builder#setDelimiter(char) setDelimiter}{@code 
(',')}&lt;/li&gt;</span>
+<span class="source-line-no">199</span><span id="line-199">         * 
&lt;li&gt;{@link Builder#setQuote(char) setQuote}{@code ('"')}&lt;/li&gt;</span>
+<span class="source-line-no">200</span><span id="line-200">         * 
&lt;li&gt;{@link Builder#setRecordSeparator(String) setRecordSeparator}{@code 
("\r\n")}&lt;/li&gt;</span>
+<span class="source-line-no">201</span><span id="line-201">         * 
&lt;li&gt;{@link Builder#setIgnoreEmptyLines(boolean) 
setIgnoreEmptyLines}{@code (true)}&lt;/li&gt;</span>
+<span class="source-line-no">202</span><span id="line-202">         * 
&lt;li&gt;{@link Builder#setDuplicateHeaderMode(DuplicateHeaderMode) 
setDuplicateHeaderMode}{@code (DuplicateHeaderMode.ALLOW_ALL)}&lt;/li&gt;</span>
+<span class="source-line-no">203</span><span id="line-203">         * 
&lt;li&gt;All other values take their Java defaults, {@code false} for 
booleans, {@code null} for object references.&lt;/li&gt;</span>
+<span class="source-line-no">204</span><span id="line-204">         * 
&lt;/ul&gt;</span>
+<span class="source-line-no">205</span><span id="line-205">         *</span>
+<span class="source-line-no">206</span><span id="line-206">         * @see 
Predefined#Default</span>
+<span class="source-line-no">207</span><span id="line-207">         * @see 
DuplicateHeaderMode#ALLOW_ALL</span>
+<span class="source-line-no">208</span><span id="line-208">         *</span>
+<span class="source-line-no">209</span><span id="line-209">         * @return 
a copy of the builder</span>
+<span class="source-line-no">210</span><span id="line-210">         */</span>
+<span class="source-line-no">211</span><span id="line-211">        public 
static Builder create() {</span>
+<span class="source-line-no">212</span><span id="line-212">            // 
@formatter:off</span>
+<span class="source-line-no">213</span><span id="line-213">            return 
new Builder()</span>
+<span class="source-line-no">214</span><span id="line-214">                    
.setDelimiter(Constants.COMMA)</span>
+<span class="source-line-no">215</span><span id="line-215">                    
.setQuote(Constants.DOUBLE_QUOTE_CHAR)</span>
+<span class="source-line-no">216</span><span id="line-216">                    
.setRecordSeparator(Constants.CRLF)</span>
+<span class="source-line-no">217</span><span id="line-217">                    
.setIgnoreEmptyLines(true)</span>
+<span class="source-line-no">218</span><span id="line-218">                    
.setDuplicateHeaderMode(DuplicateHeaderMode.ALLOW_ALL);</span>
+<span class="source-line-no">219</span><span id="line-219">                    
// @formatter:on</span>
+<span class="source-line-no">220</span><span id="line-220">        }</span>
+<span class="source-line-no">221</span><span id="line-221"></span>
+<span class="source-line-no">222</span><span id="line-222">        /**</span>
+<span class="source-line-no">223</span><span id="line-223">         * Creates 
a new builder from the given format.</span>
+<span class="source-line-no">224</span><span id="line-224">         *</span>
+<span class="source-line-no">225</span><span id="line-225">         * @param 
csvFormat the source format.</span>
+<span class="source-line-no">226</span><span id="line-226">         * @return 
a new builder.</span>
+<span class="source-line-no">227</span><span id="line-227">         */</span>
+<span class="source-line-no">228</span><span id="line-228">        public 
static Builder create(final CSVFormat csvFormat) {</span>
+<span class="source-line-no">229</span><span id="line-229">            return 
new Builder(csvFormat);</span>
+<span class="source-line-no">230</span><span id="line-230">        }</span>
+<span class="source-line-no">231</span><span id="line-231"></span>
+<span class="source-line-no">232</span><span id="line-232">        private 
boolean allowMissingColumnNames;</span>
+<span class="source-line-no">233</span><span id="line-233"></span>
+<span class="source-line-no">234</span><span id="line-234">        private 
boolean autoFlush;</span>
+<span class="source-line-no">235</span><span id="line-235"></span>
+<span class="source-line-no">236</span><span id="line-236">        private 
Character commentMarker;</span>
+<span class="source-line-no">237</span><span id="line-237"></span>
+<span class="source-line-no">238</span><span id="line-238">        private 
String delimiter;</span>
+<span class="source-line-no">239</span><span id="line-239"></span>
+<span class="source-line-no">240</span><span id="line-240">        private 
DuplicateHeaderMode duplicateHeaderMode;</span>
+<span class="source-line-no">241</span><span id="line-241"></span>
+<span class="source-line-no">242</span><span id="line-242">        private 
Character escapeCharacter;</span>
+<span class="source-line-no">243</span><span id="line-243"></span>
+<span class="source-line-no">244</span><span id="line-244">        private 
String[] headerComments;</span>
+<span class="source-line-no">245</span><span id="line-245"></span>
+<span class="source-line-no">246</span><span id="line-246">        private 
String[] headers;</span>
+<span class="source-line-no">247</span><span id="line-247"></span>
+<span class="source-line-no">248</span><span id="line-248">        private 
boolean ignoreEmptyLines;</span>
+<span class="source-line-no">249</span><span id="line-249"></span>
+<span class="source-line-no">250</span><span id="line-250">        private 
boolean ignoreHeaderCase;</span>
+<span class="source-line-no">251</span><span id="line-251"></span>
+<span class="source-line-no">252</span><span id="line-252">        private 
boolean ignoreSurroundingSpaces;</span>
+<span class="source-line-no">253</span><span id="line-253"></span>
+<span class="source-line-no">254</span><span id="line-254">        private 
String nullString;</span>
+<span class="source-line-no">255</span><span id="line-255"></span>
+<span class="source-line-no">256</span><span id="line-256">        private 
Character quoteCharacter;</span>
+<span class="source-line-no">257</span><span id="line-257"></span>
+<span class="source-line-no">258</span><span id="line-258">        private 
String quotedNullString;</span>
+<span class="source-line-no">259</span><span id="line-259"></span>
+<span class="source-line-no">260</span><span id="line-260">        private 
QuoteMode quoteMode;</span>
+<span class="source-line-no">261</span><span id="line-261"></span>
+<span class="source-line-no">262</span><span id="line-262">        private 
String recordSeparator;</span>
+<span class="source-line-no">263</span><span id="line-263"></span>
+<span class="source-line-no">264</span><span id="line-264">        private 
boolean skipHeaderRecord;</span>
+<span class="source-line-no">265</span><span id="line-265"></span>
+<span class="source-line-no">266</span><span id="line-266">        private 
boolean lenientEof;</span>
+<span class="source-line-no">267</span><span id="line-267"></span>
+<span class="source-line-no">268</span><span id="line-268">        private 
boolean trailingData;</span>
+<span class="source-line-no">269</span><span id="line-269"></span>
+<span class="source-line-no">270</span><span id="line-270">        private 
boolean trailingDelimiter;</span>
+<span class="source-line-no">271</span><span id="line-271"></span>
+<span class="source-line-no">272</span><span id="line-272">        private 
boolean trim;</span>
+<span class="source-line-no">273</span><span id="line-273"></span>
+<span class="source-line-no">274</span><span id="line-274">        /** The 
maximum number of rows to process, excluding the header row. */</span>
+<span class="source-line-no">275</span><span id="line-275">        private 
long maxRows;</span>
 <span class="source-line-no">276</span><span id="line-276"></span>
-<span class="source-line-no">277</span><span id="line-277">        private 
Builder(final CSVFormat csvFormat) {</span>
-<span class="source-line-no">278</span><span id="line-278">            
this.delimiter = csvFormat.delimiter;</span>
-<span class="source-line-no">279</span><span id="line-279">            
this.quoteCharacter = csvFormat.quoteCharacter;</span>
-<span class="source-line-no">280</span><span id="line-280">            
this.quoteMode = csvFormat.quoteMode;</span>
-<span class="source-line-no">281</span><span id="line-281">            
this.commentMarker = csvFormat.commentMarker;</span>
-<span class="source-line-no">282</span><span id="line-282">            
this.escapeCharacter = csvFormat.escapeCharacter;</span>
-<span class="source-line-no">283</span><span id="line-283">            
this.ignoreSurroundingSpaces = csvFormat.ignoreSurroundingSpaces;</span>
-<span class="source-line-no">284</span><span id="line-284">            
this.allowMissingColumnNames = csvFormat.allowMissingColumnNames;</span>
-<span class="source-line-no">285</span><span id="line-285">            
this.ignoreEmptyLines = csvFormat.ignoreEmptyLines;</span>
-<span class="source-line-no">286</span><span id="line-286">            
this.recordSeparator = csvFormat.recordSeparator;</span>
-<span class="source-line-no">287</span><span id="line-287">            
this.nullString = csvFormat.nullString;</span>
+<span class="source-line-no">277</span><span id="line-277">        private 
Builder() {</span>
+<span class="source-line-no">278</span><span id="line-278">            // 
empty</span>
+<span class="source-line-no">279</span><span id="line-279">        }</span>
+<span class="source-line-no">280</span><span id="line-280"></span>
+<span class="source-line-no">281</span><span id="line-281">        private 
Builder(final CSVFormat csvFormat) {</span>
+<span class="source-line-no">282</span><span id="line-282">            
this.allowMissingColumnNames = csvFormat.allowMissingColumnNames;</span>
+<span class="source-line-no">283</span><span id="line-283">            
this.autoFlush = csvFormat.autoFlush;</span>
+<span class="source-line-no">284</span><span id="line-284">            
this.commentMarker = csvFormat.commentMarker;</span>
+<span class="source-line-no">285</span><span id="line-285">            
this.delimiter = csvFormat.delimiter;</span>
+<span class="source-line-no">286</span><span id="line-286">            
this.duplicateHeaderMode = csvFormat.duplicateHeaderMode;</span>
+<span class="source-line-no">287</span><span id="line-287">            
this.escapeCharacter = csvFormat.escapeCharacter;</span>
 <span class="source-line-no">288</span><span id="line-288">            
this.headerComments = csvFormat.headerComments;</span>
 <span class="source-line-no">289</span><span id="line-289">            
this.headers = csvFormat.headers;</span>
-<span class="source-line-no">290</span><span id="line-290">            
this.skipHeaderRecord = csvFormat.skipHeaderRecord;</span>
+<span class="source-line-no">290</span><span id="line-290">            
this.ignoreEmptyLines = csvFormat.ignoreEmptyLines;</span>
 <span class="source-line-no">291</span><span id="line-291">            
this.ignoreHeaderCase = csvFormat.ignoreHeaderCase;</span>
-<span class="source-line-no">292</span><span id="line-292">            
this.lenientEof = csvFormat.lenientEof;</span>
-<span class="source-line-no">293</span><span id="line-293">            
this.trailingData = csvFormat.trailingData;</span>
-<span class="source-line-no">294</span><span id="line-294">            
this.trailingDelimiter = csvFormat.trailingDelimiter;</span>
-<span class="source-line-no">295</span><span id="line-295">            
this.trim = csvFormat.trim;</span>
-<span class="source-line-no">296</span><span id="line-296">            
this.autoFlush = csvFormat.autoFlush;</span>
-<span class="source-line-no">297</span><span id="line-297">            
this.quotedNullString = csvFormat.quotedNullString;</span>
-<span class="source-line-no">298</span><span id="line-298">            
this.duplicateHeaderMode = csvFormat.duplicateHeaderMode;</span>
-<span class="source-line-no">299</span><span id="line-299">        }</span>
-<span class="source-line-no">300</span><span id="line-300"></span>
-<span class="source-line-no">301</span><span id="line-301">        /**</span>
-<span class="source-line-no">302</span><span id="line-302">         * Builds a 
new CSVFormat instance.</span>
-<span class="source-line-no">303</span><span id="line-303">         *</span>
-<span class="source-line-no">304</span><span id="line-304">         * @return 
a new CSVFormat instance.</span>
-<span class="source-line-no">305</span><span id="line-305">         * 
@deprecated Use {@link #get()}.</span>
-<span class="source-line-no">306</span><span id="line-306">         */</span>
-<span class="source-line-no">307</span><span id="line-307">        
@Deprecated</span>
-<span class="source-line-no">308</span><span id="line-308">        public 
CSVFormat build() {</span>
-<span class="source-line-no">309</span><span id="line-309">            return 
get();</span>
-<span class="source-line-no">310</span><span id="line-310">        }</span>
-<span class="source-line-no">311</span><span id="line-311"></span>
-<span class="source-line-no">312</span><span id="line-312">        /**</span>
-<span class="source-line-no">313</span><span id="line-313">         * Builds a 
new CSVFormat instance.</span>
-<span class="source-line-no">314</span><span id="line-314">         *</span>
-<span class="source-line-no">315</span><span id="line-315">         * @return 
a new CSVFormat instance.</span>
-<span class="source-line-no">316</span><span id="line-316">         * @since 
1.13.0</span>
-<span class="source-line-no">317</span><span id="line-317">         */</span>
-<span class="source-line-no">318</span><span id="line-318">        
@Override</span>
-<span class="source-line-no">319</span><span id="line-319">        public 
CSVFormat get() {</span>
-<span class="source-line-no">320</span><span id="line-320">            return 
new CSVFormat(this);</span>
-<span class="source-line-no">321</span><span id="line-321">        }</span>
-<span class="source-line-no">322</span><span id="line-322"></span>
-<span class="source-line-no">323</span><span id="line-323">        /**</span>
-<span class="source-line-no">324</span><span id="line-324">         * Sets the 
duplicate header names behavior, true to allow, false to disallow.</span>
-<span class="source-line-no">325</span><span id="line-325">         *</span>
-<span class="source-line-no">326</span><span id="line-326">         * @param 
allowDuplicateHeaderNames the duplicate header names behavior, true to allow, 
false to disallow.</span>
-<span class="source-line-no">327</span><span id="line-327">         * @return 
This instance.</span>
-<span class="source-line-no">328</span><span id="line-328">         * 
@deprecated Use {@link #setDuplicateHeaderMode(DuplicateHeaderMode)}.</span>
-<span class="source-line-no">329</span><span id="line-329">         */</span>
-<span class="source-line-no">330</span><span id="line-330">        
@Deprecated</span>
-<span class="source-line-no">331</span><span id="line-331">        public 
Builder setAllowDuplicateHeaderNames(final boolean allowDuplicateHeaderNames) 
{</span>
-<span class="source-line-no">332</span><span id="line-332">            
setDuplicateHeaderMode(allowDuplicateHeaderNames ? 
DuplicateHeaderMode.ALLOW_ALL : DuplicateHeaderMode.ALLOW_EMPTY);</span>
-<span class="source-line-no">333</span><span id="line-333">            return 
this;</span>
-<span class="source-line-no">334</span><span id="line-334">        }</span>
-<span class="source-line-no">335</span><span id="line-335"></span>
-<span class="source-line-no">336</span><span id="line-336">        /**</span>
-<span class="source-line-no">337</span><span id="line-337">         * Sets the 
parser missing column names behavior, {@code true} to allow missing column 
names in the header line, {@code false} to cause an</span>
-<span class="source-line-no">338</span><span id="line-338">         * {@link 
IllegalArgumentException} to be thrown.</span>
-<span class="source-line-no">339</span><span id="line-339">         *</span>
-<span class="source-line-no">340</span><span id="line-340">         * @param 
allowMissingColumnNames the missing column names behavior, {@code true} to 
allow missing column names in the header line, {@code false} to</span>
-<span class="source-line-no">341</span><span id="line-341">         *          
                      cause an {@link IllegalArgumentException} to be 
thrown.</span>
-<span class="source-line-no">342</span><span id="line-342">         * @return 
This instance.</span>
-<span class="source-line-no">343</span><span id="line-343">         */</span>
-<span class="source-line-no">344</span><span id="line-344">        public 
Builder setAllowMissingColumnNames(final boolean allowMissingColumnNames) 
{</span>
-<span class="source-line-no">345</span><span id="line-345">            
this.allowMissingColumnNames = allowMissingColumnNames;</span>
-<span class="source-line-no">346</span><span id="line-346">            return 
this;</span>
-<span class="source-line-no">347</span><span id="line-347">        }</span>
-<span class="source-line-no">348</span><span id="line-348"></span>
-<span class="source-line-no">349</span><span id="line-349">        /**</span>
-<span class="source-line-no">350</span><span id="line-350">         * Sets 
whether to flush on close.</span>
-<span class="source-line-no">351</span><span id="line-351">         *</span>
-<span class="source-line-no">352</span><span id="line-352">         * @param 
autoFlush whether to flush on close.</span>
-<span class="source-line-no">353</span><span id="line-353">         * @return 
This instance.</span>
-<span class="source-line-no">354</span><span id="line-354">         */</span>
-<span class="source-line-no">355</span><span id="line-355">        public 
Builder setAutoFlush(final boolean autoFlush) {</span>
-<span class="source-line-no">356</span><span id="line-356">            
this.autoFlush = autoFlush;</span>
-<span class="source-line-no">357</span><span id="line-357">            return 
this;</span>
-<span class="source-line-no">358</span><span id="line-358">        }</span>
-<span class="source-line-no">359</span><span id="line-359"></span>
-<span class="source-line-no">360</span><span id="line-360">        /**</span>
-<span class="source-line-no">361</span><span id="line-361">         * Sets the 
comment marker character, use {@code null} to disable comments.</span>
-<span class="source-line-no">362</span><span id="line-362">         * 
&lt;p&gt;</span>
-<span class="source-line-no">363</span><span id="line-363">         * The 
comment start character is only recognized at the start of a line.</span>
-<span class="source-line-no">364</span><span id="line-364">         * 
&lt;/p&gt;</span>
-<span class="source-line-no">365</span><span id="line-365">         * 
&lt;p&gt;</span>
-<span class="source-line-no">366</span><span id="line-366">         * Comments 
are printed first, before headers.</span>
-<span class="source-line-no">367</span><span id="line-367">         * 
&lt;/p&gt;</span>
-<span class="source-line-no">368</span><span id="line-368">         * 
&lt;p&gt;</span>
-<span class="source-line-no">369</span><span id="line-369">         * Use 
{@link #setCommentMarker(char)} or {@link #setCommentMarker(Character)} to set 
the comment marker written at the start of each comment line.</span>
-<span class="source-line-no">370</span><span id="line-370">         * 
&lt;/p&gt;</span>
-<span class="source-line-no">371</span><span id="line-371">         * 
&lt;p&gt;</span>
-<span class="source-line-no">372</span><span id="line-372">         * If the 
comment marker is not set, then the header comments are ignored.</span>
-<span class="source-line-no">373</span><span id="line-373">         * 
&lt;/p&gt;</span>
-<span class="source-line-no">374</span><span id="line-374">         * 
&lt;p&gt;</span>
-<span class="source-line-no">375</span><span id="line-375">         * For 
example:</span>
-<span class="source-line-no">376</span><span id="line-376">         * 
&lt;/p&gt;</span>
-<span class="source-line-no">377</span><span id="line-377">         *</span>
-<span class="source-line-no">378</span><span id="line-378">         * 
&lt;pre&gt;</span>
-<span class="source-line-no">379</span><span id="line-379">         * 
builder.setCommentMarker('#').setHeaderComments("Generated by Apache Commons 
CSV", Instant.ofEpochMilli(0));</span>
-<span class="source-line-no">380</span><span id="line-380">         * 
&lt;/pre&gt;</span>
-<span class="source-line-no">381</span><span id="line-381">         * 
&lt;p&gt;</span>
-<span class="source-line-no">382</span><span id="line-382">         * 
writes:</span>
-<span class="source-line-no">383</span><span id="line-383">         * 
&lt;/p&gt;</span>
-<span class="source-line-no">384</span><span id="line-384">         *</span>
-<span class="source-line-no">385</span><span id="line-385">         * 
&lt;pre&gt;</span>
-<span class="source-line-no">386</span><span id="line-386">         * # 
Generated by Apache Commons CSV.</span>
-<span class="source-line-no">387</span><span id="line-387">         * # 
1970-01-01T00:00:00Z</span>
-<span class="source-line-no">388</span><span id="line-388">         * 
&lt;/pre&gt;</span>
+<span class="source-line-no">292</span><span id="line-292">            
this.ignoreSurroundingSpaces = csvFormat.ignoreSurroundingSpaces;</span>
+<span class="source-line-no">293</span><span id="line-293">            
this.lenientEof = csvFormat.lenientEof;</span>
+<span class="source-line-no">294</span><span id="line-294">            
this.maxRows = csvFormat.maxRows;</span>
+<span class="source-line-no">295</span><span id="line-295">            
this.nullString = csvFormat.nullString;</span>
+<span class="source-line-no">296</span><span id="line-296">            
this.quoteCharacter = csvFormat.quoteCharacter;</span>
+<span class="source-line-no">297</span><span id="line-297">            
this.quoteMode = csvFormat.quoteMode;</span>
+<span class="source-line-no">298</span><span id="line-298">            
this.quotedNullString = csvFormat.quotedNullString;</span>
+<span class="source-line-no">299</span><span id="line-299">            
this.recordSeparator = csvFormat.recordSeparator;</span>
+<span class="source-line-no">300</span><span id="line-300">            
this.skipHeaderRecord = csvFormat.skipHeaderRecord;</span>
+<span class="source-line-no">301</span><span id="line-301">            
this.trailingData = csvFormat.trailingData;</span>
+<span class="source-line-no">302</span><span id="line-302">            
this.trailingDelimiter = csvFormat.trailingDelimiter;</span>
+<span class="source-line-no">303</span><span id="line-303">            
this.trim = csvFormat.trim;</span>
+<span class="source-line-no">304</span><span id="line-304">        }</span>
+<span class="source-line-no">305</span><span id="line-305"></span>
+<span class="source-line-no">306</span><span id="line-306">        /**</span>
+<span class="source-line-no">307</span><span id="line-307">         * Builds a 
new CSVFormat instance.</span>
+<span class="source-line-no">308</span><span id="line-308">         *</span>
+<span class="source-line-no">309</span><span id="line-309">         * @return 
a new CSVFormat instance.</span>
+<span class="source-line-no">310</span><span id="line-310">         * 
@deprecated Use {@link #get()}.</span>
+<span class="source-line-no">311</span><span id="line-311">         */</span>
+<span class="source-line-no">312</span><span id="line-312">        
@Deprecated</span>
+<span class="source-line-no">313</span><span id="line-313">        public 
CSVFormat build() {</span>
+<span class="source-line-no">314</span><span id="line-314">            return 
get();</span>
+<span class="source-line-no">315</span><span id="line-315">        }</span>
+<span class="source-line-no">316</span><span id="line-316"></span>
+<span class="source-line-no">317</span><span id="line-317">        /**</span>
+<span class="source-line-no">318</span><span id="line-318">         * Builds a 
new CSVFormat instance.</span>
+<span class="source-line-no">319</span><span id="line-319">         *</span>
+<span class="source-line-no">320</span><span id="line-320">         * @return 
a new CSVFormat instance.</span>
+<span class="source-line-no">321</span><span id="line-321">         * @since 
1.13.0</span>
+<span class="source-line-no">322</span><span id="line-322">         */</span>
+<span class="source-line-no">323</span><span id="line-323">        
@Override</span>
+<span class="source-line-no">324</span><span id="line-324">        public 
CSVFormat get() {</span>
+<span class="source-line-no">325</span><span id="line-325">            return 
new CSVFormat(this);</span>
+<span class="source-line-no">326</span><span id="line-326">        }</span>
+<span class="source-line-no">327</span><span id="line-327"></span>
+<span class="source-line-no">328</span><span id="line-328">        /**</span>
+<span class="source-line-no">329</span><span id="line-329">         * Sets the 
duplicate header names behavior, true to allow, false to disallow.</span>
+<span class="source-line-no">330</span><span id="line-330">         *</span>
+<span class="source-line-no">331</span><span id="line-331">         * @param 
allowDuplicateHeaderNames the duplicate header names behavior, true to allow, 
false to disallow.</span>
+<span class="source-line-no">332</span><span id="line-332">         * @return 
This instance.</span>
+<span class="source-line-no">333</span><span id="line-333">         * 
@deprecated Use {@link #setDuplicateHeaderMode(DuplicateHeaderMode)}.</span>
+<span class="source-line-no">334</span><span id="line-334">         */</span>
+<span class="source-line-no">335</span><span id="line-335">        
@Deprecated</span>
+<span class="source-line-no">336</span><span id="line-336">        public 
Builder setAllowDuplicateHeaderNames(final boolean allowDuplicateHeaderNames) 
{</span>
+<span class="source-line-no">337</span><span id="line-337">            
setDuplicateHeaderMode(allowDuplicateHeaderNames ? 
DuplicateHeaderMode.ALLOW_ALL : DuplicateHeaderMode.ALLOW_EMPTY);</span>
+<span class="source-line-no">338</span><span id="line-338">            return 
this;</span>
+<span class="source-line-no">339</span><span id="line-339">        }</span>
+<span class="source-line-no">340</span><span id="line-340"></span>
+<span class="source-line-no">341</span><span id="line-341">        /**</span>
+<span class="source-line-no">342</span><span id="line-342">         * Sets the 
parser missing column names behavior, {@code true} to allow missing column 
names in the header line, {@code false} to cause an</span>
+<span class="source-line-no">343</span><span id="line-343">         * {@link 
IllegalArgumentException} to be thrown.</span>
+<span class="source-line-no">344</span><span id="line-344">         *</span>
+<span class="source-line-no">345</span><span id="line-345">         * @param 
allowMissingColumnNames the missing column names behavior, {@code true} to 
allow missing column names in the header line, {@code false} to</span>
+<span class="source-line-no">346</span><span id="line-346">         *          
                      cause an {@link IllegalArgumentException} to be 
thrown.</span>
+<span class="source-line-no">347</span><span id="line-347">         * @return 
This instance.</span>
+<span class="source-line-no">348</span><span id="line-348">         */</span>
+<span class="source-line-no">349</span><span id="line-349">        public 
Builder setAllowMissingColumnNames(final boolean allowMissingColumnNames) 
{</span>
+<span class="source-line-no">350</span><span id="line-350">            
this.allowMissingColumnNames = allowMissingColumnNames;</span>
+<span class="source-line-no">351</span><span id="line-351">            return 
this;</span>
+<span class="source-line-no">352</span><span id="line-352">        }</span>
+<span class="source-line-no">353</span><span id="line-353"></span>
+<span class="source-line-no">354</span><span id="line-354">        /**</span>
+<span class="source-line-no">355</span><span id="line-355">         * Sets 
whether to flush on close.</span>
+<span class="source-line-no">356</span><span id="line-356">         *</span>
+<span class="source-line-no">357</span><span id="line-357">         * @param 
autoFlush whether to flush on close.</span>
+<span class="source-line-no">358</span><span id="line-358">         * @return 
This instance.</span>
+<span class="source-line-no">359</span><span id="line-359">         */</span>
+<span class="source-line-no">360</span><span id="line-360">        public 
Builder setAutoFlush(final boolean autoFlush) {</span>
+<span class="source-line-no">361</span><span id="line-361">            
this.autoFlush = autoFlush;</span>
+<span class="source-line-no">362</span><span id="line-362">            return 
this;</span>
+<span class="source-line-no">363</span><span id="line-363">        }</span>
+<span class="source-line-no">364</span><span id="line-364"></span>
+<span class="source-line-no">365</span><span id="line-365">        /**</span>
+<span class="source-line-no">366</span><span id="line-366">         * Sets the 
comment marker character, use {@code null} to disable comments.</span>
+<span class="source-line-no">367</span><span id="line-367">         * 
&lt;p&gt;</span>
+<span class="source-line-no">368</span><span id="line-368">         * The 
comment start character is only recognized at the start of a line.</span>
+<span class="source-line-no">369</span><span id="line-369">         * 
&lt;/p&gt;</span>
+<span class="source-line-no">370</span><span id="line-370">         * 
&lt;p&gt;</span>
+<span class="source-line-no">371</span><span id="line-371">         * Comments 
are printed first, before headers.</span>
+<span class="source-line-no">372</span><span id="line-372">         * 
&lt;/p&gt;</span>
+<span class="source-line-no">373</span><span id="line-373">         * 
&lt;p&gt;</span>
+<span class="source-line-no">374</span><span id="line-374">         * Use 
{@link #setCommentMarker(char)} or {@link #setCommentMarker(Character)} to set 
the comment marker written at the start of each comment line.</span>
+<span class="source-line-no">375</span><span id="line-375">         * 
&lt;/p&gt;</span>
+<span class="source-line-no">376</span><span id="line-376">         * 
&lt;p&gt;</span>
+<span class="source-line-no">377</span><span id="line-377">         * If the 
comment marker is not set, then the header comments are ignored.</span>
+<span class="source-line-no">378</span><span id="line-378">         * 
&lt;/p&gt;</span>
+<span class="source-line-no">379</span><span id="line-379">         * 
&lt;p&gt;</span>
+<span class="source-line-no">380</span><span id="line-380">         * For 
example:</span>
+<span class="source-line-no">381</span><span id="line-381">         * 
&lt;/p&gt;</span>
+<span class="source-line-no">382</span><span id="line-382">         *</span>
+<span class="source-line-no">383</span><span id="line-383">         * 
&lt;pre&gt;</span>
+<span class="source-line-no">384</span><span id="line-384">         * 
builder.setCommentMarker('#').setHeaderComments("Generated by Apache Commons 
CSV", Instant.ofEpochMilli(0));</span>
+<span class="source-line-no">385</span><span id="line-385">         * 
&lt;/pre&gt;</span>
+<span class="source-line-no">386</span><span id="line-386">         * 
&lt;p&gt;</span>
+<span class="source-line-no">387</span><span id="line-387">         * 
writes:</span>
+<span class="source-line-no">388</span><span id="line-388">         * 
&lt;/p&gt;</span>
 <span class="source-line-no">389</span><span id="line-389">         *</span>
-<span class="source-line-no">390</span><span id="line-390">         * @param 
commentMarker the comment start marker, use {@code null} to disable.</span>
-<span class="source-line-no">391</span><span id="line-391">         * @return 
This instance.</span>
-<span class="source-line-no">392</span><span id="line-392">         * @throws 
IllegalArgumentException thrown if the specified character is a line 
break</span>
-<span class="source-line-no">393</span><span id="line-393">         */</span>
-<span class="source-line-no">394</span><span id="line-394">        public 
Builder setCommentMarker(final char commentMarker) {</span>
-<span class="source-line-no">395</span><span id="line-395">            
setCommentMarker(Character.valueOf(commentMarker));</span>
-<span class="source-line-no">396</span><span id="line-396">            return 
this;</span>
-<span class="source-line-no">397</span><span id="line-397">        }</span>
-<span class="source-line-no">398</span><span id="line-398"></span>
-<span class="source-line-no">399</span><span id="line-399">        /**</span>
-<span class="source-line-no">400</span><span id="line-400">         * Sets the 
comment marker character, use {@code null} to disable comments.</span>
-<span class="source-line-no">401</span><span id="line-401">         * 
&lt;p&gt;</span>
-<span class="source-line-no">402</span><span id="line-402">         * The 
comment start character is only recognized at the start of a line.</span>
-<span class="source-line-no">403</span><span id="line-403">         * 
&lt;/p&gt;</span>
-<span class="source-line-no">404</span><span id="line-404">         * 
&lt;p&gt;</span>
-<span class="source-line-no">405</span><span id="line-405">         * Comments 
are printed first, before headers.</span>
-<span class="source-line-no">406</span><span id="line-406">         * 
&lt;/p&gt;</span>
-<span class="source-line-no">407</span><span id="line-407">         * 
&lt;p&gt;</span>
-<span class="source-line-no">408</span><span id="line-408">         * Use 
{@link #setCommentMarker(char)} or {@link #setCommentMarker(Character)} to set 
the comment marker written at the start of each comment line.</span>
-<span class="source-line-no">409</span><span id="line-409">         * 
&lt;/p&gt;</span>
-<span class="source-line-no">410</span><span id="line-410">         * 
&lt;p&gt;</span>
-<span class="source-line-no">411</span><span id="line-411">         * If the 
comment marker is not set, then the header comments are ignored.</span>
-<span class="source-line-no">412</span><span id="line-412">         * 
&lt;/p&gt;</span>
-<span class="source-line-no">413</span><span id="line-413">         * 
&lt;p&gt;</span>
-<span class="source-line-no">414</span><span id="line-414">         * For 
example:</span>
-<span class="source-line-no">415</span><span id="line-415">         * 
&lt;/p&gt;</span>
-<span class="source-line-no">416</span><span id="line-416">         *</span>
-<span class="source-line-no">417</span><span id="line-417">         * 
&lt;pre&gt;</span>
-<span class="source-line-no">418</span><span id="line-418">         * 
builder.setCommentMarker('#').setHeaderComments("Generated by Apache Commons 
CSV", Instant.ofEpochMilli(0));</span>
-<span class="source-line-no">419</span><span id="line-419">         * 
&lt;/pre&gt;</span>
-<span class="source-line-no">420</span><span id="line-420">         * 
&lt;p&gt;</span>
-<span class="source-line-no">421</span><span id="line-421">         * 
writes:</span>
-<span class="source-line-no">422</span><span id="line-422">         * 
&lt;/p&gt;</span>
-<span class="source-line-no">423</span><span id="line-423">         *</span>
-<span class="source-line-no">424</span><span id="line-424">         * 
&lt;pre&gt;</span>
-<span class="source-line-no">425</span><span id="line-425">         * # 
Generated by Apache Commons CSV.</span>
-<span class="source-line-no">426</span><span id="line-426">         * # 
1970-01-01T00:00:00Z</span>
-<span class="source-line-no">427</span><span id="line-427">         * 
&lt;/pre&gt;</span>
+<span class="source-line-no">390</span><span id="line-390">         * 
&lt;pre&gt;</span>
+<span class="source-line-no">391</span><span id="line-391">         * # 
Generated by Apache Commons CSV.</span>
+<span class="source-line-no">392</span><span id="line-392">         * # 
1970-01-01T00:00:00Z</span>
+<span class="source-line-no">393</span><span id="line-393">         * 
&lt;/pre&gt;</span>
+<span class="source-line-no">394</span><span id="line-394">         *</span>
+<span class="source-line-no">395</span><span id="line-395">         * @param 
commentMarker the comment start marker, use {@code null} to disable.</span>
+<span class="source-line-no">396</span><span id="line-396">         * @return 
This instance.</span>
+<span class="source-line-no">397</span><span id="line-397">         * @throws 
IllegalArgumentException thrown if the specified character is a line 
break</span>
+<span class="source-line-no">398</span><span id="line-398">         */</span>
+<span class="source-line-no">399</span><span id="line-399">        public 
Builder setCommentMarker(final char commentMarker) {</span>
+<span class="source-line-no">400</span><span id="line-400">            
setCommentMarker(Character.valueOf(commentMarker));</span>
+<span class="source-line-no">401</span><span id="line-401">            return 
this;</span>
+<span class="source-line-no">402</span><span id="line-402">        }</span>
+<span class="source-line-no">403</span><span id="line-403"></span>
+<span class="source-line-no">404</span><span id="line-404">        /**</span>
+<span class="source-line-no">405</span><span id="line-405">         * Sets the 
comment marker character, use {@code null} to disable comments.</span>
+<span class="source-line-no">406</span><span id="line-406">         * 
&lt;p&gt;</span>
+<span class="source-line-no">407</span><span id="line-407">         * The 
comment start character is only recognized at the start of a line.</span>
+<span class="source-line-no">408</span><span id="line-408">         * 
&lt;/p&gt;</span>
+<span class="source-line-no">409</span><span id="line-409">         * 
&lt;p&gt;</span>
+<span class="source-line-no">410</span><span id="line-410">         * Comments 
are printed first, before headers.</span>
+<span class="source-line-no">411</span><span id="line-411">         * 
&lt;/p&gt;</span>
+<span class="source-line-no">412</span><span id="line-412">         * 
&lt;p&gt;</span>
+<span class="source-line-no">413</span><span id="line-413">         * Use 
{@link #setCommentMarker(char)} or {@link #setCommentMarker(Character)} to set 
the comment marker written at the start of each comment line.</span>
+<span class="source-line-no">414</span><span id="line-414">         * 
&lt;/p&gt;</span>
+<span class="source-line-no">415</span><span id="line-415">         * 
&lt;p&gt;</span>
+<span class="source-line-no">416</span><span id="line-416">         * If the 
comment marker is not set, then the header comments are ignored.</span>
+<span class="source-line-no">417</span><span id="line-417">         * 
&lt;/p&gt;</span>
+<span class="source-line-no">418</span><span id="line-418">         * 
&lt;p&gt;</span>
+<span class="source-line-no">419</span><span id="line-419">         * For 
example:</span>
+<span class="source-line-no">420</span><span id="line-420">         * 
&lt;/p&gt;</span>
+<span class="source-line-no">421</span><span id="line-421">         *</span>
+<span class="source-line-no">422</span><span id="line-422">         * 
&lt;pre&gt;</span>
+<span class="source-line-no">423</span><span id="line-423">         * 
builder.setCommentMarker('#').setHeaderComments("Generated by Apache Commons 
CSV", Instant.ofEpochMilli(0));</span>
+<span class="source-line-no">424</span><span id="line-424">         * 
&lt;/pre&gt;</span>
+<span class="source-line-no">425</span><span id="line-425">         * 
&lt;p&gt;</span>
+<span class="source-line-no">426</span><span id="line-426">         * 
writes:</span>
+<span class="source-line-no">427</span><span id="line-427">         * 
&lt;/p&gt;</span>
 <span class="source-line-no">428</span><span id="line-428">         *</span>
-<span class="source-line-no">429</span><span id="line-429">         * @param 
commentMarker the comment start marker, use {@code null} to disable.</span>
-<span class="source-line-no">430</span><span id="line-430">         * @return 
This instance.</span>
-<span class="source-line-no">431</span><span id="line-431">         * @throws 
IllegalArgumentException thrown if the specified character is a line 
break</span>
-<span class="source-line-no">432</span><span id="line-432">         */</span>
-<span class="source-line-no">433</span><span id="line-433">        public 
Builder setCommentMarker(final Character commentMarker) {</span>
-<span class="source-line-no">434</span><span id="line-434">            if 
(isLineBreak(commentMarker)) {</span>
-<span class="source-line-no">435</span><span id="line-435">                
throw new IllegalArgumentException("The comment start marker character cannot 
be a line break");</span>
-<span class="source-line-no">436</span><span id="line-436">            }</span>
-<span class="source-line-no">437</span><span id="line-437">            
this.commentMarker = commentMarker;</span>
-<span class="source-line-no">438</span><span id="line-438">            return 
this;</span>
-<span class="source-line-no">439</span><span id="line-439">        }</span>
-<span class="source-line-no">440</span><span id="line-440"></span>
-<span class="source-line-no">441</span><span id="line-441">        /**</span>
-<span class="source-line-no">442</span><span id="line-442">         * Sets the 
delimiter character.</span>
-<span class="source-line-no">443</span><span id="line-443">         *</span>
-<span class="source-line-no">444</span><span id="line-444">         * @param 
delimiter the delimiter character.</span>
-<span class="source-line-no">445</span><span id="line-445">         * @return 
This instance.</span>
-<span class="source-line-no">446</span><span id="line-446">         */</span>
-<span class="source-line-no">447</span><span id="line-447">        public 
Builder setDelimiter(final char delimiter) {</span>
-<span class="source-line-no">448</span><span id="line-448">            return 
setDelimiter(String.valueOf(delimiter));</span>
-<span class="source-line-no">449</span><span id="line-449">        }</span>
-<span class="source-line-no">450</span><span id="line-450"></span>
-<span class="source-line-no">451</span><span id="line-451">        /**</span>
-<span class="source-line-no">452</span><span id="line-452">         * Sets the 
delimiter character.</span>
-<span class="source-line-no">453</span><span id="line-453">         *</span>
-<span class="source-line-no">454</span><span id="line-454">         * @param 
delimiter the delimiter character.</span>
-<span class="source-line-no">455</span><span id="line-455">         * @return 
This instance.</span>
-<span class="source-line-no">456</span><span id="line-456">         */</span>
-<span class="source-line-no">457</span><span id="line-457">        public 
Builder setDelimiter(final String delimiter) {</span>
-<span class="source-line-no">458</span><span id="line-458">            if 
(containsLineBreak(delimiter)) {</span>
-<span class="source-line-no">459</span><span id="line-459">                
throw new IllegalArgumentException("The delimiter cannot be a line 
break");</span>
-<span class="source-line-no">460</span><span id="line-460">            }</span>
-<span class="source-line-no">461</span><span id="line-461">            if 
(delimiter.isEmpty()) {</span>
-<span class="source-line-no">462</span><span id="line-462">                
throw new IllegalArgumentException("The delimiter cannot be empty");</span>
-<span class="source-line-no">463</span><span id="line-463">            }</span>
-<span class="source-line-no">464</span><span id="line-464">            
this.delimiter = delimiter;</span>
-<span class="source-line-no">465</span><span id="line-465">            return 
this;</span>
-<span class="source-line-no">466</span><span id="line-466">        }</span>
-<span class="source-line-no">467</span><span id="line-467"></span>
-<span class="source-line-no">468</span><span id="line-468">        /**</span>
-<span class="source-line-no">469</span><span id="line-469">         * Sets the 
duplicate header names behavior.</span>
-<span class="source-line-no">470</span><span id="line-470">         *</span>
-<span class="source-line-no">471</span><span id="line-471">         * @param 
duplicateHeaderMode the duplicate header names behavior</span>
-<span class="source-line-no">472</span><span id="line-472">         * @return 
This instance.</span>
-<span class="source-line-no">473</span><span id="line-473">         * @since 
1.10.0</span>
-<span class="source-line-no">474</span><span id="line-474">         */</span>
-<span class="source-line-no">475</span><span id="line-475">        public 
Builder setDuplicateHeaderMode(final DuplicateHeaderMode duplicateHeaderMode) 
{</span>
-<span class="source-line-no">476</span><span id="line-476">            
this.duplicateHeaderMode = Objects.requireNonNull(duplicateHeaderMode, 
"duplicateHeaderMode");</span>
-<span class="source-line-no">477</span><span id="line-477">            return 
this;</span>
-<span class="source-line-no">478</span><span id="line-478">        }</span>
-<span class="source-line-no">479</span><span id="line-479"></span>
-<span class="source-line-no">480</span><span id="line-480">        /**</span>
-<span class="source-line-no">481</span><span id="line-481">         * Sets the 
escape character.</span>
-<span class="source-line-no">482</span><span id="line-482">         *</span>
-<span class="source-line-no">483</span><span id="line-483">         * @param 
escapeCharacter the escape character.</span>
-<span class="source-line-no">484</span><span id="line-484">         * @return 
This instance.</span>
-<span class="source-line-no">485</span><span id="line-485">         * @throws 
IllegalArgumentException thrown if the specified character is a line 
break</span>
-<span class="source-line-no">486</span><span id="line-486">         */</span>
-<span class="source-line-no">487</span><span id="line-487">        public 
Builder setEscape(final char escapeCharacter) {</span>
-<span class="source-line-no">488</span><span id="line-488">            
setEscape(Character.valueOf(escapeCharacter));</span>
-<span class="source-line-no">489</span><span id="line-489">            return 
this;</span>
-<span class="source-line-no">490</span><span id="line-490">        }</span>
-<span class="source-line-no">491</span><span id="line-491"></span>
-<span class="source-line-no">492</span><span id="line-492">        /**</span>
-<span class="source-line-no">493</span><span id="line-493">         * Sets the 
escape character.</span>
-<span class="source-line-no">494</span><span id="line-494">         *</span>
-<span class="source-line-no">495</span><span id="line-495">         * @param 
escapeCharacter the escape character.</span>
-<span class="source-line-no">496</span><span id="line-496">         * @return 
This instance.</span>
-<span class="source-line-no">497</span><span id="line-497">         * @throws 
IllegalArgumentException thrown if the specified character is a line 
break</span>
-<span class="source-line-no">498</span><span id="line-498">         */</span>
-<span class="source-line-no">499</span><span id="line-499">        public 
Builder setEscape(final Character escapeCharacter) {</span>
-<span class="source-line-no">500</span><span id="line-500">            if 
(isLineBreak(escapeCharacter)) {</span>
-<span class="source-line-no">501</span><span id="line-501">                
throw new IllegalArgumentException("The escape character cannot be a line 
break");</span>
-<span class="source-line-no">502</span><span id="line-502">            }</span>
-<span class="source-line-no">503</span><span id="line-503">            
this.escapeCharacter = escapeCharacter;</span>
-<span class="source-line-no">504</span><span id="line-504">            return 
this;</span>
-<span class="source-line-no">505</span><span id="line-505">        }</span>
-<span class="source-line-no">506</span><span id="line-506"></span>
-<span class="source-line-no">507</span><span id="line-507">        /**</span>
-<span class="source-line-no">508</span><span id="line-508">         * Sets the 
header defined by the given {@link Enum} class.</span>
-<span class="source-line-no">509</span><span id="line-509">         *</span>
-<span class="source-line-no">510</span><span id="line-510">         * 
&lt;p&gt;</span>
-<span class="source-line-no">511</span><span id="line-511">         * 
Example:</span>
-<span class="source-line-no">512</span><span id="line-512">         * 
&lt;/p&gt;</span>
-<span class="source-line-no">513</span><span id="line-513">         *</span>
-<span class="source-line-no">514</span><span id="line-514">         * 
&lt;pre&gt;</span>
-<span class="source-line-no">515</span><span id="line-515">         * public 
enum HeaderEnum {</span>
-<span class="source-line-no">516</span><span id="line-516">         *     
Name, Email, Phone</span>
-<span class="source-line-no">517</span><span id="line-517">         * }</span>
+<span class="source-line-no">429</span><span id="line-429">         * 
&lt;pre&gt;</span>
+<span class="source-line-no">430</span><span id="line-430">         * # 
Generated by Apache Commons CSV.</span>
+<span class="source-line-no">431</span><span id="line-431">         * # 
1970-01-01T00:00:00Z</span>
+<span class="source-line-no">432</span><span id="line-432">         * 
&lt;/pre&gt;</span>
+<span class="source-line-no">433</span><span id="line-433">         *</span>
+<span class="source-line-no">434</span><span id="line-434">         * @param 
commentMarker the comment start marker, use {@code null} to disable.</span>
+<span class="source-line-no">435</span><span id="line-435">         * @return 
This instance.</span>
+<span class="source-line-no">436</span><span id="line-436">         * @throws 
IllegalArgumentException thrown if the specified character is a line 
break</span>
+<span class="source-line-no">437</span><span id="line-437">         */</span>
+<span class="source-line-no">438</span><span id="line-438">        public 
Builder setCommentMarker(final Character commentMarker) {</span>
+<span class="source-line-no">439</span><span id="line-439">            if 
(isLineBreak(commentMarker)) {</span>
+<span class="source-line-no">440</span><span id="line-440">                
throw new IllegalArgumentException("The comment start marker character cannot 
be a line break");</span>
+<span class="source-line-no">441</span><span id="line-441">            }</span>
+<span class="source-line-no">442</span><span id="line-442">            
this.commentMarker = commentMarker;</span>
+<span class="source-line-no">443</span><span id="line-443">            return 
this;</span>
+<span class="source-line-no">444</span><span id="line-444">        }</span>
+<span class="source-line-no">445</span><span id="line-445"></span>
+<span class="source-line-no">446</span><span id="line-446">        /**</span>
+<span class="source-line-no">447</span><span id="line-447">         * Sets the 
delimiter character.</span>
+<span class="source-line-no">448</span><span id="line-448">         *</span>
+<span class="source-line-no">449</span><span id="line-449">         * @param 
delimiter the delimiter character.</span>
+<span class="source-line-no">450</span><span id="line-450">         * @return 
This instance.</span>

[... 5270 lines stripped ...]


Reply via email to