code: public void writeHeader(List<? extends AttributeProvider> providers) throws IOException, AttributeException {
  		if (this.columns == null) {
  			this.columns = extractColumns(providers);
  			writeDescriptionHeader(providers.size());
  			writeColumns();
  		}
  	}
docs: Write the header of the dbf file.
  
  @param providers is the list of attribute providers that will be used for the dbf writing.
  @throws AttributeException if an attribute cannot pre set.
  @throws IOException in case of IO error.