If you need to read or write a custom CSV format, like one that uses tabs instead of commas as a delimiter, you can use WriterBuilder and ReaderBuilder to customize the expected format. Remember this well if you're planning on using Microsoft Excel, as it has the annoying tendency to be regionally inconsistent in its choice of delimiters (https://stackoverflow.com/questions/10140999/csv-with-comma-or-semicolon).
When working with CSV and Microsoft Excel, be careful and sanitize your data before handing it to Excel. Even though CSV is defined as plain data with no control identifiers, Excel will interpret and execute macros when importing CSV. For examples of possible attack vectors opened by this, see http://georgemauer.net/2017/10/07/csv-injection.html.
This is also useful if a Windows application refuses to accept the \n terminator that csv uses as per default. In this case, simply specify the following code in the builder to use the Windows-native \r...