Class AbstractCsvWriter

java.lang.Object
org.supercsv.io.AbstractCsvWriter
All Implemented Interfaces:
Closeable, Flushable, AutoCloseable, ICsvWriter
Direct Known Subclasses:
CsvBeanWriter, CsvListWriter, CsvMapWriter, CsvResultSetWriter

public abstract class AbstractCsvWriter extends Object implements ICsvWriter
Defines the standard behaviour of a CSV writer.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private int
     
    private final CsvEncoder
     
    private int
     
    private final CsvPreference
     
    private int
     
    private final Writer
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    AbstractCsvWriter(Writer writer, CsvPreference preference)
    Constructs a new AbstractCsvWriter with the supplied writer and preferences.
    AbstractCsvWriter(Writer writer, CsvPreference preference, boolean bufferizeWriter)
    Constructs a new AbstractCsvWriter with the supplied writer, preferences and option to wrap the writer.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Closes the underlying writer, flushing it first.
    void
    Flushes the underlying writer.
    int
    Gets the current position in the file.
    int
    Gets the current row number (i.e.
    protected void
    In order to maintain the current row and line numbers, this method must be called at the very beginning of every write method implemented in concrete CSV writers.
    void
    Writes a single-line comment to the CSV file (the comment must already include any special comment characters e.g.
    void
    writeHeader(String... header)
    Writes the header of the CSV file.
    protected void
    writeRow(Object... columns)
    Writes one or more Object columns as a line to the CsvWriter.
    protected void
    writeRow(String... columns)
    Writes one or more String columns as a line to the CsvWriter.
    protected void
    writeRow(List<?> columns)
    Writes a List of columns as a line to the CsvWriter.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • writer

      private final Writer writer
    • preference

      private final CsvPreference preference
    • encoder

      private final CsvEncoder encoder
    • lineNumber

      private int lineNumber
    • rowNumber

      private int rowNumber
    • columnNumber

      private int columnNumber
  • Constructor Details

    • AbstractCsvWriter

      public AbstractCsvWriter(Writer writer, CsvPreference preference)
      Constructs a new AbstractCsvWriter with the supplied writer and preferences.
      Parameters:
      writer - the stream to write to
      preference - the CSV preferences
      Throws:
      NullPointerException - if writer or preference are null
    • AbstractCsvWriter

      public AbstractCsvWriter(Writer writer, CsvPreference preference, boolean bufferizeWriter)
      Constructs a new AbstractCsvWriter with the supplied writer, preferences and option to wrap the writer.
      Parameters:
      writer - the stream to write to
      preference - the CSV preferences
      bufferizeWriter - indicates if the writer should be wrapped internally with a BufferedWriter
      Throws:
      NullPointerException - if writer or preference are null
  • Method Details

    • close

      public void close() throws IOException
      Closes the underlying writer, flushing it first.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException
    • flush

      public void flush() throws IOException
      Flushes the underlying writer.
      Specified by:
      flush in interface Flushable
      Throws:
      IOException
    • incrementRowAndLineNo

      protected void incrementRowAndLineNo()
      In order to maintain the current row and line numbers, this method must be called at the very beginning of every write method implemented in concrete CSV writers. This will allow the correct row/line numbers to be used in any exceptions thrown before writing occurs (e.g. during CellProcessor execution), and means that getLineNumber() and getRowNumber() can be called after writing to return the line/row just written.
    • getLineNumber

      public int getLineNumber()
      Gets the current position in the file. The first line of the file is line number 1.
      Specified by:
      getLineNumber in interface ICsvWriter
      Returns:
      the line number
    • getRowNumber

      public int getRowNumber()
      Gets the current row number (i.e. the number of CSV records - including the header - that have been written). This differs from the lineNumber, which is the number of real lines that have been written to the file. The first row is row 1 (which is typically the header row).
      Specified by:
      getRowNumber in interface ICsvWriter
      Returns:
      the current row number
    • writeRow

      protected void writeRow(List<?> columns) throws IOException
      Writes a List of columns as a line to the CsvWriter.
      Parameters:
      columns - the columns to write
      Throws:
      IllegalArgumentException - if columns.size == 0
      IOException - If an I/O error occurs
      NullPointerException - if columns is null
    • writeRow

      protected void writeRow(Object... columns) throws IOException
      Writes one or more Object columns as a line to the CsvWriter.
      Parameters:
      columns - the columns to write
      Throws:
      IllegalArgumentException - if columns.length == 0
      IOException - If an I/O error occurs
      NullPointerException - if columns is null
    • writeRow

      protected void writeRow(String... columns) throws IOException
      Writes one or more String columns as a line to the CsvWriter.
      Parameters:
      columns - the columns to write
      Throws:
      IllegalArgumentException - if columns.length == 0
      IOException - If an I/O error occurs
      NullPointerException - if columns is null
    • writeComment

      public void writeComment(String comment) throws IOException
      Writes a single-line comment to the CSV file (the comment must already include any special comment characters e.g. '#' at start). Please note that comments are not part of RFC4180, so this may make your CSV file less portable.
      Specified by:
      writeComment in interface ICsvWriter
      Parameters:
      comment - the comment
      Throws:
      IOException - if an I/O error occurs
    • writeHeader

      public void writeHeader(String... header) throws IOException
      Writes the header of the CSV file.
      Specified by:
      writeHeader in interface ICsvWriter
      Parameters:
      header - one or more header Strings
      Throws:
      IOException - if an I/O error occurs