Class DataWriter

All Implemented Interfaces:
Closeable, Flushable, Appendable, AutoCloseable

public class DataWriter
extends TableWriter
Writer implementation for writing BFS data files. A data file is a matrix of data. Columns are separated by tabs. Values are escaped using the regular rules (TabCrLfEncoderDecoder). All rows must have an equal number of columns. The number of columns is defined by the first call to bfsPrintData(Object...) or by calling setColumnCount(int).
Version:
2.15
Author:
Nicklas
Last modified
$Date: 2019-05-21 13:37:09 +0200 (tis, 21 maj 2019) $
  • Field Details

    • filename

      private String filename
    • lockedColumns

      private boolean lockedColumns
    • columnCount

      private int columnCount
  • Constructor Details

    • DataWriter

      public DataWriter​(Writer out)
      Create a new BFS data writer.
      Parameters:
      out - The parent writer which this writer will print to
  • Method Details

    • create

      public static DataWriter create​(OutputStream out, String filename)
      Utility method for creating a data writer when you have an output stream.
      Parameters:
      out - The output stream the writer should print to
      filename - Optional, the name of the file the output stream is printing to
    • create

      public static DataWriter create​(File file)
      Utility method for creating a data writer to a file in the BASE file system. The character set and MIME type on the file are automatically updated.
      Parameters:
      file - The file in the BASE file system
    • create

      public static DataWriter create​(File file) throws IOException
      Utility method for creating a data writer to a file in the native file system. If the file doesn't exists, it is created.
      Parameters:
      file - The file in the native file system
      Throws:
      IOException
    • getFilename

      public String getFilename()
      Get the file name that this writer is printing to.
      Returns:
      The file name or null if not known
    • setFilename

      public void setFilename​(String filename)
      Set the file name that this writer is printing to.
    • getColumnCount

      public int getColumnCount()
      Get the number of data columns. This information is only available after the first line of data has been printed or if a specific number of columns has been set.
      Returns:
      The number of columns, or -1 if this information is not yet known
    • setColumnCount

      public void setColumnCount​(int columns)
      Set the number of data columns. This can only be changed as long as no data has been written to the stream.
      Parameters:
      columns - The number of data columns, if 0 or negative the first call to bfsPrintData(Object...) determines the number of columns
    • isLockedColumns

      public boolean isLockedColumns()
      Checks if the number of columns has been locked or not. The number of required columns are locked the first time a call to bfsPrintData(Object...) is made.
    • bfsPrintData

      public void bfsPrintData​(Object... data)
      Print a data line. The number of columns must be the same for all calls to this method. Normally, the first call determines the required number of columns, but this can also be set with setColumnCount(int).
      Parameters:
      data - The data to print
      Throws:
      IllegalStateException - If headers has not been printed
      IllegalArgumentException - If the data array doesn't match the required number of columns
      NullPointerException - If the data array is null