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 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