Package com.opencsv

Class CSVWriterBuilder


  • public class CSVWriterBuilder
    extends java.lang.Object
    Builder for creating the CSVWriter.

    Note: this should be the preferred method of creating the CSVWriter as we will no longer be creating constructors for new fields added to the writer. Plus there are now multiple flavors of CSVWriter and this will help build the correct one.


    If a CSVWriterBuilder has a parser injected, it will create a CSVParserWriter, otherwise it will create a CSVWriter. If a parser is injected into a builder that already has a separator, quotechar, or escapechar then an IllegalArguementException is thrown. Likewise the opposite is true.


    If nothing is defined then a CSVWriter will be produced with default settings.

    Writer writer = new StringWriter(); // any Writer
    CSVParser parser = new CSVParserBuilder().build();
    ICSVWriter csvParserWriter = new CSVWriterBuilder(writer)
        .withParser(parser)
        .withLineEnd(ICSVWriter.RFC4180_LINE_END)
        .build(); // will produce a CSVParserWriter

    ICSVWriter csvWriter = new CSVWriterBuilder(writer)
        .withSeparator(ICSVParser.DEFAULT_SEPARATOR)
        .withQuoteChar(ICSVParser.DEFAULT_QUOTE_CHARACTER)
        .withEscapeChar(ICSVParser.DEFAULT_ESCAPE_CHARACTER)
        .withLineEnd(ICSVWriter.DEFAULT_LINE_END)
        .build(); // will produce a CSVWriter

    Since:
    4.2
    • Constructor Detail

      • CSVWriterBuilder

        public CSVWriterBuilder​(java.io.Writer writer)
        Constructor taking a writer for the resulting CSV output. This is because the Writer is required and everything else has an optional default.
        Parameters:
        writer - A writer to create the resulting CSV output for the writer.
    • Method Detail

      • withParser

        public CSVWriterBuilder withParser​(ICSVParser parser)
        Sets the parser that the ICSVWriter will be using. If none is defined then a CSVWriter will be returned when the build command is executed.
        Parameters:
        parser - Parser to inject into the ICSVWriter.
        Returns:
        The CSVWriterBuilder with the parser set.
        Throws:
        java.lang.IllegalArgumentException - If a separator, quote or escape character has been set.
      • withSeparator

        public CSVWriterBuilder withSeparator​(char separator)
        Sets the separator that the ICSVWriter will be using.
        Parameters:
        separator - The separator character to use when creating the CSV content.
        Returns:
        The CSVWriterBuilder with the separator set.
        Throws:
        java.lang.IllegalArgumentException - If a parser has been set.
      • withQuoteChar

        public CSVWriterBuilder withQuoteChar​(char quoteChar)
        Sets the quote character that the ICSVWriter will be using.
        Parameters:
        quoteChar - The quote character to use when creating the CSV content.
        Returns:
        The CSVWriterBuilder with the quote character set.
        Throws:
        java.lang.IllegalArgumentException - If a parser has been set.
      • withEscapeChar

        public CSVWriterBuilder withEscapeChar​(char escapeChar)
        Sets the escape character that the ICSVWriter will be using.
        Parameters:
        escapeChar - The escape character to use when creating the CSV content.
        Returns:
        The CSVWriterBuilder with the escape character set.
        Throws:
        java.lang.IllegalArgumentException - If a parser has been set.
      • withLineEnd

        public CSVWriterBuilder withLineEnd​(java.lang.String lineEnd)
        Sets the newline character that the ICSVWriter will use. If none is defined then \n will be used
        Parameters:
        lineEnd - Newline string to inject into the ICSVWriter.
        Returns:
        The CSVWriterBuilder with the lineEnd set.
      • build

        public ICSVWriter build()
        Creates the CSVWriter.
        Returns:
        A CSVWriter based on the set criteria.