Apache Commons logo Commons CSV™ logo

Release Notes

Release History

Version Date Description
1.7 tba Feature and bug fix release
1.6 2018-09-22 Feature and bug fix release
1.5 2017-09-03 Feature and bug fix release
1.4 2016-05-28 Feature and bug fix release
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.7 – tba

No changes in this release.

Release 1.6 – 2018-09-22

Type Changes By
Update Add more documentation to CSVPrinter. Fixes CSV-231. britter
Add Add autoFlush option for CsvPrinter. PR #24. Fixes CSV-217. Thanks to Korolyov Alexei. ggregory
Fix The behavior of quote char using is not similar as Excel does when the first string contains CJK char(s). Fixes CSV-219. Thanks to Zhang Hongda. ggregory
Fix Don't quote cells just because they have UTF-8 encoded characters. Fixes CSV-172. Thanks to Andrew Pennebaker. ggregory
Add Add API org.apache.commons.csv.CSVFormat.withSystemRecordSeparator(). Fixes CSV-220. Thanks to Gary Gregory. ggregory
Fix Inconsistency between Javadoc of CSVFormat DEFAULT EXCEL. Fixes CSV-223. Thanks to Samuel Martin. ggregory
Fix Create CSVFormat.ORACLE preset. Fixes CSV-209. Thanks to Gary Gregory. ggregory
Fix Some multi-iterator parsing peek sequences incorrectly consume elements. Fixes CSV-224. Thanks to David Warshaw. ggregory
Fix Parse method should avoid creating a redundant BufferedReader. Fixes CSV-225. Thanks to Anson Schwabecher. ggregory

Release 1.5 – 2017-09-03

Type Changes By
Fix withNullString value is printed without quotes when QuoteMode.ALL is specified; add QuoteMode.ALL_NON_NULL. PR #17. Fixes CSV-203. Thanks to Richard Wheeldon, Kai Paroth. ggregory
Fix Fix outdated comments about FileReader in CSVParser #13. Fixes CSV-194. Thanks to Marc Prud'hommeaux. ggregory
Fix Fix incorrect method name 'withFirstRowAsHeader' in user guide. Fixes CSV-193. Thanks to Matthias Wiehl. ggregory
Fix Negative numeric values in the first column are always quoted in minimal mode. Fixes CSV-171. Thanks to Gary Gregory, Michael Graessle, Adrian Bridgett. ggregory
Update Update platform requirement from Java 6 to 7. Fixes CSV-187. Thanks to Gary Gregory. ggregory
Update Do not use RuntimeException in CSVParser.iterator().new Iterator() {...}.getNextRecord(). Fixes CSV-201. Thanks to Benedikt Ritter, Gary Gregory. ggregory
Add CSVParser: Add factory method accepting InputStream. Fixes CSV-189. Thanks to Peter Holzwarth, Gary Gregory. ggregory
Add Add convenience API CSVFormat.print(File, Charset). Fixes CSV-190. Thanks to Gary Gregory. ggregory
Add Add convenience API CSVFormat.print(Path, Charset). Fixes CSV-191. Thanks to Gary Gregory. ggregory
Add Add convenience API CSVParser.parse(Path, Charset, CSVFormat). Fixes CSV-192. Thanks to Gary Gregory. ggregory
Add Add convenience API CSVFormat#printer() to print to System.out. Fixes CSV-205. Thanks to Gary Gregory. ggregory
Add Provide a CSV Format for printing PostgreSQL CSV and Text formats. Fixes CSV-207. Thanks to Gary Gregory. ggregory
Add Adding a placeholder in the Lexer and CSV parser to store the end-of-line string. Fixes CSV-214. Thanks to Nitin Mahendru, Gary Gregory. ggregory

Release 1.4 – 2016-05-28

Type Changes By
Update Make CSVPrinter.print(Object) GC-free. Fixes CSV-181. Thanks to Gary Gregory. ggregory
Add Allow some printing operations directly from CSVFormat. Fixes CSV-182. Thanks to Gary Gregory. ggregory
Update Drop ferc.gov tests. Fixes CSV-183. ggregory

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