Apache Commons logo Commons CSV™ logo

Release Notes

Release History

Version Date Description
1.3 2016-05-09 Feature and bug fix release
1.2 2015-08-24 Feature and bug fix release
1.1 2014-11-16 Feature and bug fix release
1.0 2014-08-14 First release

Release 1.3 – 2016-05-09

Type Changes By
Add Add shortcut method for using first record as header to CSVFormat Fixes CSV-179. britter
Add Add withHeader(Class<? extends Enum>) to CSVFormat Fixes CSV-180. britter
Update Comment line hides next record; update Javadoc to make behaviour clear Fixes CSV-167. Thanks to Rene. sebb
Update CSVPrinter doesn't skip creation of header record if skipHeaderRecord is set to true Fixes CSV-153. Thanks to Wren. britter
Add Add IgnoreCase option for accessing header names Fixes CSV-159. Thanks to Yamil Medina. ggregory
Add The null string should be case-sensitive when reading records Fixes CSV-169. Thanks to Gary Gregory. ggregory
Fix CSVFormat.nullString should not be escaped Fixes CSV-168. Thanks to Gary Gregory, cornel creanga. ggregory
Fix CSVFormat.MYSQL nullString should be "\N" Fixes CSV-170. Thanks to Gary Gregory, cornel creanga. ggregory
Fix Fix Javadoc to say CSVFormat with() methods return a new CSVFormat Fixes CSV-161. Thanks to Gary Gregory, Kristof Meixner, Emmanuel Bourg. ggregory
Add Support for ignoring trailing delimiter. Fixes CSV-175. Thanks to Gary Gregory, Chris Jones. ggregory
Add Support trimming leading and trailing blanks. Fixes CSV-177. Thanks to Gary Gregory. ggregory
Add Create default formats for Informix UNLOAD and UNLOAD CSV. Fixes CSV-178. Thanks to Gary Gregory. ggregory

Release 1.2 – 2015-08-24

Type Changes By
Fix CSVFormat.with* methods clear the header comments Fixes CSV-145. Thanks to Frank Ulbricht. ggregory
Fix Incorrect Javadoc on QuoteMode.NONE Fixes CSV-156. Thanks to Jason Steenstra-Pickens. ggregory
Add Add enum CSVFormat.Predefined that contains the default CSVFormat values. Fixes CSV-157. ggregory

Release 1.1 – 2014-11-16

Type Changes By
Fix QuoteMode.NON_NUMERIC doesn't work with CSVPrinter.printRecords(ResultSet) Fixes CSV-140. Thanks to Damjan Jovanovic. ggregory
Fix CSVFormat#withHeader doesn't work well with #printComment, add withHeaderComments(String...) Fixes CSV-130. Thanks to Sergei Lebedev. ggregory
Fix CSVFormat.EXCEL should ignore empty header names Fixes CSV-128. ggregory
Fix Incorrect Javadoc referencing org.apache.commons.csv.CSVFormat withQuote() Fixes CSV-132. Thanks to Sascha Szott. ggregory
Update Improve toString() implementation of CSVRecord Fixes CSV-124. Thanks to Kalyan. brentworden
Update Unified parameter validation Fixes CSV-134. Thanks to wu wen. ggregory
Add Add CSVFormat#with 0-arg methods matching boolean arg methods Fixes CSV-129. ggregory
Add Save positions of records to enable random access Fixes CSV-131. Thanks to Holger Stratmann. ggregory
Add CSVPrinter.printRecord(ResultSet) with metadata Fixes CSV-139. ggregory

Release 1.0 – 2014-08-14

Type Changes By
Fix No longer works with Java 6 Fixes CSV-125. britter
Fix NullPointerException when empty header string and and null string of "" Fixes CSV-122. Thanks to Mike Lewis. britter
Update Validate format parameters in constructor Fixes CSV-117. sebb
Add IllegalArgumentException thrown when the header contains duplicate names when the column names are empty. Fixes CSV-121. Thanks to Sebastian Hardt. ggregory
Add CSVFormat#withHeader doesn't work with CSVPrinter Fixes CSV-120. Thanks to Sergei Lebedev. ggregory
Add CSVFormat is missing a print(...) method Fixes CSV-119. Thanks to Sergei Lebedev. ggregory
Fix CSVRecord.toMap() throws NPE on formats with no headers. Fixes CSV-118. Thanks to Enrique Lara. ggregory
Fix Check whether ISE/IAE are being used appropriately Fixes CSV-113. sebb
Fix CSVFormat constructor should reject a header array with duplicate entries Fixes CSV-114. sebb
Fix HeaderMap is inconsistent when it is parsed from an input with duplicate columns names Fixes CSV-112. britter
Fix CSVRecord.toMap() fails if row length shorter than header length Fixes CSV-111. ggregory
Fix CSVFormat.format allways append null Fixes CSV-106. ggregory
Add Add Map conversion API to CSVRecord Fixes CSV-105. ggregory
Fix CSVParser: getHeaderMap throws NPE Fixes CSV-100. ggregory
Update Lots of possible changes Fixes CSV-42. Thanks to Bob Smith. ebourg
Update Use Character instead of char for char fields except delimiter Fixes CSV-78. sebb
Update Revert Builder implementation in CSVFormat Fixes CSV-99. britter
Fix CSVRecord does not verify that the length of the header mapping matches the number of values Fixes CSV-53. britter
Update Allow the handling of NULL values Fixes CSV-93. ggregory
Update Use the Builder pattern for CSVFormat Fixes CSV-68. ggregory
Update Clarify comment handling Fixes CSV-84. sebb
Update CSVParser.nextValue() seems pointless Fixes CSV-25. ebourg
Update Allow the String value for null to be customized for the CSV printer Fixes CSV-97. ggregory
Update Not possible to create a CSVFormat from scratch Fixes CSV-88. ggregory
Add Keep track of record number Fixes CSV-52. ggregory
Update Lexer should only use char fields Fixes CSV-94. sebb
Add Need a way to extract parsed headers, e.g. for use in formatting output Fixes CSV-92. ggregory
Add Header support Fixes CSV-65. ebourg
Fix Confusing semantic of the ignore leading/trailing spaces parameters Fixes CSV-54. sebb
Update Add convenience methods to CSVLexer Fixes CSV-71. sebb
Update Is CharBuffer really needed, now that StringBuilder is available? Fixes CSV-59. ebourg
Update Replace while(true)-loop in CSVParser.getRecord with do-while-loop Fixes CSV-55. britter
Fix CSVFormat describes itself as immutable, but it is not - in particular it is not thread-safe Fixes CSV-34. sebb
Fix Endless loops in CSV parser Fixes CSV-36. yonik
Fix NullPointerException in CSVPrinter.print()/println() Fixes CSV-13. ebourg
Update CSVPrinter overhaul Fixes CSV-45. yonik
Fix Excel strategy uses wrong separator Fixes CSV-23. ebourg
Update CSVStrategy has modifiable public static variables Fixes CSV-49. Thanks to Bob Smith. ebourg
Add Predefined format for MYSQL Fixes CSV-48. ebourg
Update Reduce visibility of methods in internal classes Fixes CSV-46. ebourg
Update ExtendedBufferedReader does too much Fixes CSV-26. jacopoc
Update Decide whether to keep the csv.writer subpackage Fixes CSV-27. ebourg